1. 程式人生 > >SSH原理與運用

SSH原理與運用

ssh SSH 遠程主機

一、SSH介紹及特性

?
1、介紹
ssh命令是openssh套件中的客戶端連接工具,可以給予ssh加密協議實現安全的遠程登錄服務器。

具體的軟件實現: 
    OpenSSH: ssh協議的開源實現,CentOS默認安裝 
    dropbear:另一個開源實現 
SSH協議版本 
    v1: 基於CRC-32做MAC,不安全;man-in-middle 
    v2:雙方主機協議選擇安全的MAC方式 
    基於DH算法做密鑰交換,基於RSA或DSA實現身份認證 
兩種方式的用戶登錄認證:
    基於password 
    基於key
    端口號:22
    -------------------------------------------------------------------------------------
ssh, 配置文件:/etc/ssh/ssh_config 
    Host PATTERN 
        StrictHostKeyChecking no 首次登錄不顯示檢查提示 
格式:ssh [user@]host [COMMAND] 
           ssh [-l user] host [COMMAND] 
             -p port:遠程服務器監聽的端口 
             -b:指定連接的源IP 
             -v:調試模式 
             -C:壓縮方式 
             -X: 支持x11轉發 
             -Y:支持信任x11轉發 
            -t:  強制偽tty分配 
                ssh -t remoteserver1 ssh remoteserver2

?
技術分享圖片
?

?
2、ssh服務三種登錄驗證
當用戶遠程連接ssh服務器時,會復制ssh服務器 /etc/ssh/ssh_host*key.pub(CentOS7默認是 ssh_host_ecdsa_key.pub)文件中的公鑰到客戶機的 ~./ssh/know_hosts中。下次連接時,會自動匹配相應私鑰 ,不能匹配,將拒絕連接

①基於用戶和口令登錄驗證
1.客戶端發起ssh請求,服務器會把自己的公鑰發送給用戶
2.用戶會根據服務器發來的公鑰對密碼進行加密
3.加密後的信息回傳給服務器,服務器用自己的私鑰解密, 如果密碼正確,則用戶登錄成功、
技術分享圖片

?


②基於密鑰的登錄方式 :
1.首先在客戶端生成一對密鑰(ssh-keygen)

2.並將客戶端的公鑰ssh-copy-id 拷貝到服務端
3.當客戶端再次發送一個連接請求,包括ip、用戶名
4.服務端得到客戶端的請求後,會到authorized_keys中 查找,如果有響應的IP和用戶,就會隨機生成一個字符串 ,例如:acdf
5.服務端將使用客戶端拷貝過來的公鑰進行加密,然後發 送給客戶端
6.得到服務端發來的消息後,客戶端會使用私鑰進行解密 ,然後將解密後的字符串發送給服務端
7.服務端接受到客戶端發來的字符串後,跟之前的字符串進 行對比,如果一致,就允許免密碼登錄
技術分享圖片


?

③基於key認證 
(1) 在客戶端生成密鑰對 
    ssh-keygen -t rsa [-P ‘‘] [-f “~/.ssh/id_rsa"] 
    (2) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄 
    ssh-copy-id [-i [identity_file]] [user@]host
(3) 測試 
(4) 在SecureCRT或Xshell實現基於key驗證 在SecureCRT工具—>創建公鑰—>生成Identity.pub文件 轉化為openssh兼容格式(適合SecureCRT,Xshell不需要轉化 格式),並復制到需登錄主機上相應文件authorized_keys中, 註意權限必須為600,在需登錄的ssh主機上執行: 
    ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重設私鑰口令: 
    ssh-keygen –p 
(6)驗證代理(authentication agent)保密解密後的密鑰 
    這樣口令就只需要輸入一次 
    在GNOME中,代理被自動提供給root用戶 
    否則運行ssh-agent bash 
(7)鑰匙通過命令添加給代理 
    ssh-add

二、SSH轉發特點

? 

SSH原理與運用