天天看點

ssh簡介

簡介:

<col>

ssh 全稱

Secure Shell Protocol

預設端口

預設22

服務處于監聽狀态,用于遠端連結,早期使用telnet;

主要功能

  遠端連機和sftp 功能

版本

兩個不相容的ssh協定版本,分别是1.x和2.x;服務端預設是2.x

ssh2同時支援RSA和DSA密鑰,但是ssh1僅僅支援RSA密鑰;

ssh服務端軟體

OpenSSH(負責加密)和用戶端SSH組成;

工作機制

   本地的ssh用戶端發送一個連結請求到遠端的ssh服務端,服務端檢查連結的用戶端發送的資料包和ip位址,如果确認合法,就會發送密鑰給ssh的用戶端,此時,用戶端本地的再将密鑰發送給服務端,自此連結建立。

備注:連不上的情況

防火牆

端口是否修改

用戶端線路有問題

ssh1.x的整個聯機加密步驟:

#每一台ssh服務主機都可以使用RSA加密方式來産生一個1024-bit的RSAkey,這個RSA的加密方式就是用來生産公鑰和私鑰的算法之一。

1、當ssh服務啟動時,就會産生一個768-bit 的臨時公鑰:

      grep -i serverkey /etc/ssh/sshd_config

        #ServerKeyBits 1024

         注意(centos 是768)

2、

當client端SSH聯機請求傳送過來時,Server就會将這個1024-bit的公鑰傳給Client端,此時Client會将此公鑰與先前存儲的

公鑰進行比對,看是否标準。判斷标準是:Client 端聯機使用者目錄下~/.ssh/known_hosts檔案的内容(linux用戶端)

 在Client端接受到這個1024-bit的Server後,Client本地也會随機産生一個246-bit的私鑰(Private

key或hostkey),并且以加密的方式(具體的加密算法由用戶端在伺服器提供的所有可用算法中選擇,預設為3DES算法)将Server

key和host key 整合成一對完整的key pair,并将這個keypair在傳給server。

 3、當用戶端完成後,Server與Client端在這次的聯機中,就以這一對1024-bit的keypair進行資料傳輸

ssh version2 多加了一個确認聯機正确性的Diffie-Hellman機制,每次資料傳輸中,server都會以該機制檢查資料的來源是否正确,這樣,避免聯機過程中被插入惡意程式代碼的問題,是比較安全的。

ssh服務的認證類型

ssh服務主要提供兩種級别的安全驗證:

基于密碼的安全驗證 : ssh -p52113 [email protected]

基于密鑰的安全認證 :cat  ~/.ssh/known_hosts       

[10.10.70.11]:52113

ssh-rsa

AAAAB3NzaC1yc2EAAAABIwAAAQEAtjcHQwK/He9lYMFkZm9VhJEUOyby5t6EafXguptVd71TKJJ+SLGebJq3gX8BCLE7VLxDQDPZ/v57AmHFg72Vh4FTbDnhgcD0rgFAwShRIv+R3vCiZTbTW3tsjuIpEC6VlMaTxe5mfGk9hC7X0S2vC3eLV11kJTsNztlhjkikUTwu9qJ9jKL3uVVe6L8+u7Q3pjL1ORwKxqlNMs5lDoZ4V3PP3MfC2PNcrr1IIhJZCaRKmHVc0v2ba2yGnvWzZcd/KRVirlSixyL7Ibka07NsShVrBROkiVcWDf9Yc+xI5D9WkBJncgJEetUQ07bRUZsC/LYUg8On6XcU0lhYw1Al2w==

安裝:

#預設安裝就已包含ssh服務所需要的軟體OpenSSL和OpenSSH

 1、開機自啟動;

 2、服務端檔案: /etc/ssh/sshd_config 

  #服務端包含兩個服務功能ssh遠端連結。SFTP服務

    用戶端檔案:/etc/ssh/ssh_config

  #ssh用戶端:包含ssh以及像scp(遠端拷貝)、slogin(遠端登入)、sftp(安全FTP檔案傳輸)等應用程式

ssh密鑰生成 :

工具:ssh-keygen #是一個腳本

#密鑰生成的時候盡量不使用root使用者

A、

    ssh-keygen  -t dsa (指定算法)

    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:

    4b:73:39:13:6d:f6:9d:e2:2f:5e:1c:23:37:ea:37:94 root@moban2

    The key's randomart p_w_picpath is:

    +--[ RSA 2048]----+

    |                 |

    |           .     |

    |          . +    |

    |           = . ..|

    |        S =  o.*o|

    |       . + o. *E+|

    |        .    o.o |

    |            ..oo |

    |            .oo..|

    +-----------------+

   # -t 指定算法   預設rsa ;  dsa 一般用于數字簽名 (一般使用dsa)

 B、檢查

     ls  ~/.ssh/

     id_dsa  id_dsa.pub   

     #id_dsa(私鑰 :鑰匙) 權限 :小   分發伺服器: 保留本地

      id_dsa.pub(公鑰:鎖)

 C、進行公鑰分發 :

    工具:ssh-copy-id

    ssh-copy-id -i  id_dsa.pub "-p 52113 [email protected]"

    #ssh-copy-id 是一個腳本;預設端口是22 ;如果不是預設需要使用-p指定 ,且需要使用雙引号;隻能分發公鑰;

    範例: ssh-copy-id -i  id_dsa.pub "-p 52113 [email protected]"

            [email protected]'s password:

            Now try logging into the machine, with "ssh '-p 52113 [email protected]'", and check in:

            .ssh/authorized_keys 成功了

             to make sure we haven't added extra keys that you weren't expecting.

  D、檢查分發主機:    

        ll  ~/.ssh/authorized_keys

         -rw------- 1 root root 596 Jan 30 21:51 /root/.ssh/authorized_keys

     驗證:

     ssh  10.10.70.12

     Last login: Fri Jan 30 22:50:07 2015 from 10.10.70.11

配置檔案:

    #sshd_config服務端;ssh_config用戶端

     網友詳解:http://bbs.linuxtone.org/thread-5487-1-1.html 

     Port 52113             #→ssh連接配接預設的端口修改

     PermitRootLogin no         #→root禁止遠端登陸。

     PermitEmptyPasswords no    #→禁止空密碼登陸

     UseDNS no                  #→不使用DNS

     GSSAPIAuthentication no    #一般為NO

ssh 連接配接慢 排查:

1、在ssh服務端上更改/etc/ssh/sshd_config檔案中的配置為如下内容:

UseDNS no

# GSSAPI options

GSSAPIAuthentication no

然後,執行/etc/init.d/sshd restart重新開機sshd程序使上述配置生效,在連接配接一般就不慢了。

2、檢查ssh服務端上/etc/hosts檔案中,127.0.0.1對應的主機名是否和uname -n的結果一樣,或者把本機ip和hostname(uname -n結果)加入到/etc/hosts裡。

3、利用ssh -v的調試功能查找慢的原因

繼續閱讀