SSH原理與應用.

一、什麼是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目錄;

  1.    contab -e

  2.     /usr/bin/scp -rp [email protected]:/website  /backup/website_$(date +%F)

    雖然上面的操作思路是沒有問題的,但是還是離不開人爲的操作,故無法實現自動化執行,因爲在你進行遠程登錄進行拷貝的時候需要手動輸入用戶webadmin的用戶密碼.那如何讓兩臺主機之間建立一個信任關係呢?
    下面就運用到了加密的知識:
    對稱密鑰加密
    加密與解密使用同一密鑰
    優勢:速度快
    缺點:密鑰本省需要交換
    非對稱密鑰加密
    也稱之爲公開密鑰加密,使用時生成兩個密鑰,一個公開存放,爲公鑰;一個私人持有,爲私鑰。用戶用其中一個密鑰加密的數據只有用另一個才能解密。
    優勢:安全性好
    缺點:速度慢
    所以加密信息時,通常是對稱密鑰加密非對稱密鑰結合使用
    用公鑰加密,私鑰解密 ---加密文件
    用私鑰加密,用公鑰解密 --數字簽名

建立信任主機:

  1. 在客戶端創建密鑰對

    在本機(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 ~]$

 

未完待續....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章