openssh for solaris 安裝

shilei1發表於2010-07-19

SSH簡介

  在Solaris 下直接telnet另外一臺主機系統的話,如果用snoop來跟蹤所傳送的資料包的,可以非常輕鬆獲得系統的登陸口令,因為在telnet程式在傳送網路資訊的時候,對包的內容是不加密的,直接用明碼傳送,對一些別有用心的使用者來說,就有機會獲得root等等使用者的口令,這對系統的安全是個非常大的威脅。在RedHat的AS3版本,預設安裝的時候in.telnetd的軟體包都不安裝,只安裝預設的SSH。

  SSH的本意就是Secure Shell,是個安全的shell,而且SSH使用ssl安全套接字來傳輸資料,對資訊進行加密傳送,這樣增加了安全性。Openssh是開源組織釋出的一個軟體,可以在網站能下載到相應的Solaris的版本。

Openssh的安裝

  在Solaris下安裝軟體可以透過pkgadd命令,也可以透過admintool、smc、 swmtool等工具,swmtool是admintool的一個子集,在Soalris 10上admintool已經完全被smc替代。OpenSSH,OpenSSL,Gcc等軟體可到以下的地址下載:

  ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/openssh-4.2p1-sol8-sparc-local.gz
  ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/openssl-0.9.8a-sol8-sparc-local.gz
  ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/gcc-3.3.2-sol8-sparc-local.gz

  OpenSSH目前提供的版本為4.2p1,在安裝的過程中切記以下的幾點:

  1. 該軟體安裝在/usr/local目錄下,其執行檔案都在/usr/local/bin下面,但是sshd這個守護程式在/usr/local/sbin/下面,如果要執行sshd的話,必須是使用絕對路徑來執行該程式,否則會報錯!

  2. 安裝OpenSSH必須安裝Openssl,否則OpenSSH將無法正確的工作。

  3. OpenSSH由於使用一些開源的庫函式,所以必須安裝zlib,libgcc或者直接安裝gcc-3.3.2及以後的版本的gcc。

  A. 安裝gcc-3.3.2(或者安裝zlib,libgcc這兩個軟體包)
    用gzip –d gcc-3.3.2-sol8-sparc-local.gz 將壓縮包解開,然後使用
    pkgadd -d gcc-3.3.2-sol8-sparc-local 安裝gcc軟體:
    The following packages are available:
    1 SMCgcc gcc (sparc) 3.3.2
    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]: 1
    一路回車即可成功安裝!

  B. 安裝OpenSSH軟體
    pkgadd –d openssh-4.2p1-sol8-sparc-local
    The following packages are available:
    1 SMCossh421 openssh (sparc) 4.2p1
    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]:1
    一路回車即可成功安裝!

  C.安裝OpenSSL軟體
    pkgadd -d openssl-0.9.8a-sol8-sparc-local
    The following packages are available:
    1 SMCossl8a openssl (sparc) 0.9.8a
    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]:1
    一路回車即可成功安裝!

OpenSSH安裝後的設定

  安裝完後,需要進行一些必要的設定才能使得sshd正常工作,首先需要設定PATH,這樣對配置比較方便:

  BSH: PATH=/usr/local/bin:$PATH;export PATH
  CSH: setenv PATH /usr/local/bin:$PATH
  KSH: export PATH=/usr/local/bin:$PATH

  這裡不需要設定sshd的路徑,因為該命令必須使用絕對路徑來執行,如果直接執行,該命令會報錯。

  1. 首先生成必要rsal、dsa、rsa等型別的key檔案,按以下的命令來做:

  # ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
  Generating public/private rsa1 key pair.
  Your identification has been saved in /usr/local/etc/ssh_host_key.
  Your public key has been saved in /usr/local/etc/ssh_host_key.pub.
  The key fingerprint is:
  5c:30:b9:cc:45:b6:fd:c3:c1:e1:a2:cc:7c:0f:3c:29

  #ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
  Generating public/private dsa key pair.
  ification has been saved in /usr/local/etc/ssh_host_dsa_key.
  Your public key has been saved in /usr/local/etc/ssh_host_dsa_key.pub.
  The key fingerprint is:
  30:ce:d9:c1:61:36:40:0b:9e:04:6f:89:96:f1:e7:39 root@v420

  #ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
  Generating public/private rsa key pair.
  Your identification has been saved in /usr/local/etc/ssh_host_rsa_key.
  Your public key has been saved in /usr/local/etc/ssh_host_rsa_key.pub.
  The key fingerprint is:
  37:34:88:98:b3:8c:1b:50:e0:50:9c:3d:18:c6:64:2a

  生成key檔案以後,仍然是無法執行執行sshd,需要建立sshd使用者,要注意的是該使用者是沒有有效的shell的,這是考慮到了系統的安全,按以下的方法建立使用者sshd:

  mkdir /var/empty; chown root:sys /var/empty; chmod 755 /var/empty
  groupadd sshd
  useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd

  建立該使用者後,就能直接手工啟動sshd這個守護程式了,需要使用絕對路徑來執行該守護程式,否則會報錯。在老版本里面,一個必須要做到步驟就是必須在 /etc/下建立一個ssh的目錄,然後將/usr/local/etc下所有配置檔案複製到/etc/ssh下面,或者做個符號連結,ln –s /usr/local/etc/ssh /etc/ssh。vi sshd_config檔案, 將ListenAdress前面的#註釋去掉,再在後面添入主機的IP地址,PermitRootLogin前面#號去掉,後面的no改成yes。不是什麼原因,新版本已經預設允許root遠端登入了。

  做完以上的步驟即可手工啟動sshd程式了/usr/local/sbin/sshd。以下是啟動和關閉指令碼的制定,建立/etc/init.d/sshd指令碼,內容如下,然後作兩個符號連結:

  ln –s /etc/init.d/sshd /etc/rc3.d/S99StarSSHD
  ln –s /etc/init.d/sshd /etc/rc1.d/K99StopSSHD
 

  ------------------/etc/init.d/sshd 指令碼參考如下:(沒有調通)

  #!/sbin/sh
   KEYDIR=/usr/local/etc/ssh (或者/etc/ssh)
   KEYGEN="/usr/local/bin/ssh-keygen -q"
   PIDFILE=/var/run/sshd.pid
  case $1 in
  'start')
   if [ -x /usr/local/bin/ssh-keygen ]; then
    if [ ! -f "$KEYDIR/ssh_host_rsa_key" ]; then
       echo "Creating new RSA public/private host key pair"
       $KEYGEN -f $KEYDIR/ssh_host_rsa_key -t rsa -N ''
    fi

    if [ ! -f "$KEYDIR/ssh_host_dsa_key" ]; then
     echo "Creating new DSA public/private host key pair"
     $KEYGEN -f $KEYDIR/ssh_host_dsa_key -t dsa -N ''
    fi
   fi

  [ -x /usr/local/sbin/sshd ] && /usr/local/sbin/sshd &

  ;;

  'stop')
   if [ -z "$_INIT_RUN_LEVEL" ]; then
     set -- `/usr/bin/who -r`
     _INIT_RUN_LEVEL="$7"
     _INIT_PREV_LEVEL="$9"
   fi

  if [ $_INIT_RUN_LEVEL -lt $_INIT_PREV_LEVEL ]; then
      /usr/bin/pkill -u 0 -x sshd
  fi
  if [ -f "$PIDFILE" ]; then
    /usr/bin/kill -TERM `/usr/bin/cat $PIDFILE`
  fi
  ;;
  'restart')
  if [ -f "$PIDFILE" ]; then
   /usr/bin/kill -HUP `/usr/bin/cat $PIDFILE
  fi
  ;;
  *)
  echo "Usage: $0 { start | stop }"
  exit 1
  ;;
  esac

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-668377/,如需轉載,請註明出處,否則將追究法律責任。

相關文章