Linux九陰真經之九陰白骨爪殘卷2(SSH)
SSH
ssh:安全的遠程登錄
兩種方式的用戶登錄認證
基於passwork
基於key
客戶端
常見的客戶端工具有:Windows版的putty、securecrt、xshell;linux中有ssh、sftp、scp、slogin等
配置文件: /etc/ssh/ssh_config
ssh命令
用法:ssh username@host CMD
選項:
-p port : 遠程服務器監聽端口
-b : 指定連接的源IP
-v : 調試模式
-C : 壓縮方式
-X : 支持x11轉發
-Y :支持信任x11轉發
-t :強制偽tty分配 例: ssh -t remoteserver1 ssh remoteserver2
ssh 客戶端
當客戶端第一次連接服務器時,服務器會發送自己的公鑰給客戶端,並保存在客戶端的~./ssh/know_hosts中。下次連接時不會再詢問。
SSH服務登錄驗證
基於密碼登錄驗證
由上圖我們總結出如下步驟
(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 ~/.ssh/id_rsa.pub root@IPADDR
(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
例:配置基於密鑰的免密登錄
1、在客戶端A生成密鑰對,按3次回車鍵
[root@laobai ~/.ssh]#ssh-keygen
2、把公鑰傳給客戶端B對應的家目錄,並重命名為 authorized_keys
3、在客戶端Bde ~/.ssh 的目錄下檢查是否有authorized_keys 文件
4、在客戶端A測試連接客戶端B,發現無需輸入密碼,直接登錄
Linux九陰真經之九陰白骨爪殘卷2(SSH)