SSH 為 Secure Shell 的縮寫,由 IETF 的網路工作小組(NetworkWorking Group)所制定;SSH 為建立在應用程式層和傳輸層基礎上的安全性通訊協定。
傳統的網路服務程式,如FTP、POP和Telnet其本質上都是不安全的;因為它們在網路上用明文傳送資料、使用者帳號和使用者口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一台機器冒充真正的伺服器接收使用者傳給伺服器的資料,然後再冒充使用者把資料傳給真正的伺服器。
而 SSH 是目前較可靠,專為遠程登入工作階段和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊泄露問題。透過 SSH 可以對所有傳輸的資料進行加密,也能夠防止 DNS 欺騙和 IP 欺騙。
第一步、安裝SSH
系統及版本:CentOS release 5.3 (Final)
安裝SSH:
yum install ssh
啟動SSH:
service sshd start
設定開機運行:
chkconfig sshd on
第二步、配置SSH
SSH安裝後,軟體位於/etc/ssh/目錄下,設定檔為:/etc/ssh/sshd_config
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 ←修改後變為此狀態,不允許密碼方式的登入#PermitEmptyPasswordsno ←找到此行將行頭的“#”刪除,不允許空密碼登入
PermitEmptyPasswords no ←修改後變為此狀態,禁止空密碼進行登入
對於想要以公私密金鑰方式進行Linux作業系統串連的SSH配置可以修改如下設定:
# vi /etc/ssh/sshd_config //開啟以下內容
HostKey /etc/ssh/ssh_host_rsa_key
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
GSSAPIAuthentication yes
設定檔修改後,重啟sshd服務使修改生效:
# /etc/init.d/sshd restart
經過上述修改後,預設所有的伺服器都可以串連到Linux系統上;
如果需要對串連該伺服器的主機進行限定,可以按照下面的步驟進行限定;
在配置修改 /etc/hosts.deny ,/etc/hosts.allow 檔案中,進行如下修改:
# 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串連請求
# 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串連請求
設定檔修改後,重啟sshd服務使修改生效:
# /etc/init.d/sshd restart
第三步、建立SSH使用者和公私密金鑰檔案
例如有兩個CentOS 6.5 系統,分別為A機和B機,現在A需要通過SSH的方式訪問B,則需要在B上進行上面的配置修改,然後按照下面的操作:
在A機上:
#useradd test01
# su– test01
$ 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 nopassphrase): ←輸入口令
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:8ecentospub@sample.centospub.com
注意:上述操作中,在A上建立了一個test01使用者,其中產生密鑰的過程,可以全面斷行符號通過,這個過程類似於,在Windows上使用SecureCRT等工具進行公開金鑰私密金鑰建立的過程。
然後確認一下公開金鑰與密鑰的建立,以及對應於用戶端的一些處理。
$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:22id_rsa.pub←確認公開金鑰已被建立
$ cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys←公開金鑰內容輸出到相應檔案中
$ chmod400 ~/.ssh/authorized_keys←將建立立的公開金鑰檔案屬性設定為400
在主機A上產生了密鑰檔案後,接下來需要在B上進行添加
#useradd test01
# passwd test01 --主機B機上的使用者密碼一定要設定,在SSH串連時需要輸入
# su– test01
$ scp A:/home/test01/.ssh/authorized_keys ~/.ssh/authorized_keys
$ chmod400 ~/.ssh/authorized_keys
將A上的公開金鑰拷貝到B的test01使用者下的.ssh目錄中的 authorized_keys檔案中,作為伺服器端驗證檔案;
如果遠程拷貝不行,可以直接在B機上建立~/.ssh/authorized_keys檔案,然後將公開金鑰資訊寫入即可。
第四步、進行SSH登入測試:
上面的步驟操作完成後,可以進行下面的測試:
在A機上:
# sshtest01@B
然後輸入B機上test01使用者的密碼即可正常串連到B機上了。
注意此時如果想要修改登入使用者的許可權,就在B機上對test01的相關許可權進行修改即可。