(轉)CentOS之SSH安裝與配置

mahanso發表於2010-12-27

SSH 為 Secure Shell 的縮寫,由 IETF 的網路工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。


傳統的網路服務程式,如FTP、POP和Telnet其本質上都是不安全的;因為它們在網路上用明文傳送資料、使用者帳號和使用者口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一臺機器冒充真正的伺服器接收使用者傳給伺服器的資料,然後再冒充使用者把資料傳給真正的伺服器。


而 SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。透過 SSH 可以對所有傳輸的資料進行加密,也能夠防止 DNS 欺騙和 IP 欺騙。



系統及版本:CentOS release 5.3 (Final)


安裝SSH

yum install ssh

啟動SSH

service sshd start

設定開機執行

chkconfig sshd on

 

SSH相關配置檔案的修改

首先修改SSH的配置檔案。如下:

[root@sample ~]# vi /etc/ssh/sshd_config  ← 用vi開啟SSH的配置檔案

#Protocol 2,1 ← 找到此行將行頭“#”刪除,再將行末的“,1”刪除,只允許SSH2方式的連線
 ↓
Protocol 2 ← 修改後變為此狀態,僅使用SSH2

#ServerKeyBits 768
 ← 找到這一行,將行首的“#”去掉,並將768改為1024
 ↓
ServerKeyBits 1024 ← 修改後變為此狀態,將ServerKey強度改為1024位元

#PermitRootLogin yes  ← 找到這一行,將行首的“#”去掉,並將yes改為no
 ↓
PermitRootLogin no  ← 修改後變為此狀態,不允許用root進行登入

#PasswordAuthentication yes ← 找到這一行,將yes改為no
 ↓
PasswordAuthentication no ← 修改後變為此狀態,不允許密碼方式的登入

#PermitEmptyPasswords no  ← 找到此行將行頭的“#”刪除,不允許空密碼登入
 ↓
PermitEmptyPasswords no  ← 修改後變為此狀態,禁止空密碼進行登入

 

然後儲存並退出。(vi儲存退出的命令為ZZ)

  因為我們只想讓SSH服務為管理系統提供方便,所以在不透過外網遠端管理系統的情況下,只允許內網客戶端透過SSH登入到伺服器,以最大限度減少不安全因素。設定方法如下:

[root@sample ~]# vi /etc/hosts.deny  ← 修改遮蔽規則,在文尾新增相應行

#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!

sshd: ALL  ← 新增這一行,遮蔽來自所有的SSH連線請求

[root@sample ~]# vi /etc/hosts.allow  ← 修改允許規則,在文尾新增相應行

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#

sshd: 192.168.0.  ← 新增這一行,只允許來自內網的SSH連線請求

 

重啟動SSH啟動

  在修改完SSH的配置檔案後,需要重新啟動SSH服務才能使新的設定生效。

[root@sample ~]# /etc/rc.d/init.d/sshd restart  ← 重新啟動SSH伺服器

Stopping sshd:             [ OK ]
Starting sshd:             [ 
OK ]  ← SSH伺服器重新啟動成功

  這時,在遠端終端(自用PC等等)上,用SSH客戶端軟體以正常的密碼的方式是無法登入伺服器的。為了在客戶能夠登入到伺服器,我們接下來建立SSH用的公鑰與私鑰,以用於客戶端以“鑰匙”的方式登入SSH伺服器。

SSH2的公鑰與私鑰的建立

  登入為一個一般使用者,基於這個使用者建立公鑰與私鑰。(這裡以centospub使用者為例)

[root@sample ~]# su – centospub ← 登入為一般使用者centospub

[centospub@sample ~]$ ssh-keygen -t rsa  ← 建立公鑰與私鑰
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kaz/.ssh/id_rsa):
  ← 鑰匙的檔名,這裡保持預設直接回車
Created directory ‘/home/kaz/.ssh’
Enter passphrase (empty for no passphrase):
  ← 輸入口令
Enter same passphrase again:   ← 再次輸入口令
Your identification has been saved in /home/kaz/.ssh/id_rsa.
Your public key has been saved in /home/kaz/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e centospub@sample.centospub.com

  然後確認一下公鑰與金鑰的建立,以及對應於客戶端的一些處理。

[centospub@sample ~]$ cd ~/.ssh  ← 進入使用者SSH配置檔案的目錄

[centospub@sample .ssh]$ ls -l  ← 列出檔案
total 16
-rw——- 1 centospub centospub 951 Sep 4 19:22 
id_rsa  ← 確認私鑰已被建立
-rw-r–r– 1 centospub centospub 241 Sep 4 19:22 id_rsa.pub  ← 確認公鑰已被建立

[centospub@sample .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  ← 公鑰內容輸出到相應檔案中

[centospub@sample .ssh]$ rm -f ~/.ssh/id_rsa.pub  ← 刪除原來的公鑰檔案

[centospub@sample .ssh]$ chmod 400 ~/.ssh/authorized_keys  ← 將新建立的公鑰檔案屬性設定為400

  然後,將私鑰透過安全的方式轉移到欲透過SSH連線到伺服器的PC上。這裡,以透過3.5寸磁碟為介質為例:

centospub@sample .ssh]$ exit   ← 退出一般使用者的登入(返回root的登入)

[root@sample ~]# mount /mnt/floppy/  ← 載入軟盤驅動器

[root@sample ~]# mv /home/centospub/.ssh/id_rsa /mnt/floppy/  ← 將剛剛建立的私鑰移動到軟盤

[root@sample ~]# umount /mnt/floppy/  ← 解除安裝軟盤驅動器



轉自:http://blog.techippo.org/archives/370

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

相關文章