一、什麼是SSH?
簡單說,SSH是一種網絡協議,用於計算機之間的加密登錄。
如果一個用戶從本地計算機,使用SSH協議登錄另一臺遠程計算機,我們就可以認爲,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。
最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成爲互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成爲Linux系統的標準配置。
需要指出的是,S
SH只是一種協議,存在多種實現,既有商業實現,也有開源實現。
SSH應用不僅僅侷限於遠程管理登錄,其實它包括了三個組件,其中:
1.ssh 遠程登錄 SecureCRT 、Xshell、Putty;
2.sftp 文件共享(類FTP) SSH Secure File Transfer Client;
3.scp 文件共享 (類cp).
二、SSH基本用法:
1.從一臺Linux主機遠程登錄到另外一臺服務器、或者登錄到本機。
$ ssh user@host #-> ssh 用戶名@遠程主機IP
如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
$ ssh host
如果ssh服務器使用了非默認端口例如2345,則客戶機子在登錄時必須明確指定。
$ ssh -p 2345 user@host
常用選項:
a: -2 強制使用第2代ssh協議
b: -p 指定端口號
注意事項:前提是遠程主機(目標主機)上必須有一個用戶身份;
兩個基本條件:a:空密碼用戶登錄禁止
b:root登錄禁止
2.用戶的遠程登錄控制;通過修改/etc/ssh/sshd.conf 配置文件,可以進一步提高sshd遠程登錄服務的安全性。
怎樣禁止root登錄:
[root@pxe_srv_3 ~]# vim /etc/ssh/sshd.conf ......... ......... #PermitRootLogin no #->將註釋符號刪除、並將 yes 改爲 no ,那樣就會禁止root以ssh登錄 ......... ......... ~
修改端口號:
[root@pxe_srv_3 ~]# vim /etc/ssh/sshd.conf ........ ........ #Port 22 #->將註釋去掉,改成非標準的端口號即可 ........ ........ 改變端口號之後,在進行遠程連接時指定改變過後的端口號: [root@pxe_srv_3 ~]# ssh -p port user@遠程主機IP
限制用戶登錄驗證過程的時間(默認爲2分鐘)及最大嘗試數,若超過限制後仍未登陸則斷開連接。
[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config ........ ........ #LoginGraceTime 2m #->超時時間 #MaxAuthTries 6 #->最大嘗試數 ........ ........
拒絕用戶zhangsan、lisi遠程登錄系統,其他均允許
[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config DenyUsers zhangsan lisi #->在配置文件中添加此行內容.
允許用戶jerry登錄系統,允許用戶admin從主機59.151.110.110遠程登錄系統,其他用戶拒絕(不要同時使用AllowUsers和DenyUsers配置)
[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config AllowUsers jerry [email protected] [email protected]
3.scp遠程複製文件
從本機拷貝文件到遠程主機: scp 本地文件 用戶名@遠程主機地址:遠程主機目標目錄 scp -r 本地目錄 用戶名@遠程主機地址:遠程主機目標目錄 從遠程主機拷貝文件到本地: scp 用戶名@遠程主機地址:遠程目錄 本地目錄 scp -r 用戶名@遠程主機地址:遠程目錄 本地目錄
常用選項: -p:保持原文件屬性
-r:複製目錄
-P:指定端口號(ssh port)
舉例分析:例如我們有臺放在遠端的Server,需要定期的備份該服務器上的/website目錄;
contab -e
/usr/bin/scp -rp [email protected]:/website /backup/website_$(date +%F)
雖然上面的操作思路是沒有問題的,但是還是離不開人爲的操作,故無法實現自動化執行,因爲在你進行遠程登錄進行拷貝的時候需要手動輸入用戶webadmin的用戶密碼.那如何讓兩臺主機之間建立一個信任關係呢?
下面就運用到了加密的知識:
對稱密鑰加密
加密與解密使用同一密鑰
優勢:速度快
缺點:密鑰本省需要交換
非對稱密鑰加密
也稱之爲公開密鑰加密,使用時生成兩個密鑰,一個公開存放,爲公鑰;一個私人持有,爲私鑰。用戶用其中一個密鑰加密的數據只有用另一個才能解密。
優勢:安全性好
缺點:速度慢
所以加密信息時,通常是對稱密鑰加密非對稱密鑰結合使用
用公鑰加密,私鑰解密 ---加密文件
用私鑰加密,用公鑰解密 --數字簽名
建立信任主機:
在客戶端創建密鑰對
在本機(localhost)已root身份登錄
[root@pxe_srv_3 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): #->直接回車確認 Enter passphrase (empty for no passphrase): #->此處設置密碼短語(保護私鑰文件) Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 3b:fc:c2:a9:fb:ba:1e:5d:1e:37:8a:2b:5e:82:1a:35 root@pxe_srv_3 [root@pxe_srv_3 ~]# ls -lh ~/.ssh/ total 12K -rw------- 1 root root 1.7K Sep 1 06:22 id_rsa #->私鑰文件 -rw-r--r-- 1 root root 396 Sep 1 06:22 id_rsa.pub #->公鑰文件
b. 上傳公鑰文件給服務器:
[root@pxe_srv_3 ~]# scp /root/.ssh/[email protected]:/home/webadmin #->運用scp上傳公鑰文件到服務器上webadmin的家目錄; [email protected]'s password: #->此時還是需要遠程服務器上webadmin用戶的密碼 id_rsa.pub 100% 396 0.4KB/s 00:00 [root@pxe_srv_3 ~]#
c. 在服務器端以webadmin用戶身份登錄,將客戶端公鑰文件的內容添加至webadmin用戶的授權密鑰庫
[webadmin@pxe_srv_001 ~]$ mkdir -p ~webadmin/.ssh #->默認不存在,手動創建 [webadmin@pxe_srv_001 ~]$ cd /home/webadmin/ [weadmin@pxe_srv_001 webadmin]$ cat id_rsa.pub >> .ssh/authorized_keys #->將公鑰導入到授權密鑰庫文件authorized_keys. [webadmin@pxe_srv_001 ~]$ ls -ld .ssh/ drwx------ 2 aa aa 4096 Aug 31 21:12 .ssh/ [webadmin@pxe_srv_001 ~]$ ls -ld .ssh/authorized_keys -rw------- 1 aa aa 396 Aug 31 21:12 .ssh/authorized_keys [webadmin@pxe_srv_001 ~]$
由於sshd默認採用嚴格的權限檢測模式(StrictModes yes),因此需要注意授權密鑰文件authorized_keys的權限設置;所有者要求是登錄的目標用戶或root,同組或其他用戶對該文件不能有寫入權限。否則無法使用密鑰驗證成功登錄系統。權限保持爲600, .ssh目錄爲700即可~
d. 使用密鑰對驗證方式登錄服務器:
[root@pxe_srv_3 ~]# ssh [email protected] #->直接回車就登錄成功. Last login: Sat Aug 31 21:15:12 2013 from 192.168.10.24 [webadmin@pxe_srv_001 ~]$
未完待續....