關於AS5SSH支援key認證的完全解決方案
SSH 為 Secure Shell 的縮寫, 專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。透過 SSH 可以對所有傳輸的資料進行加密,也能夠防止 DNS欺騙和IP欺騙.還有一個優點就是為其傳輸的資料是經過壓縮的,所以可以加快傳輸的速度.
在客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基於密碼的安全驗證),知道帳號密碼,就可登入到遠端主機,並且所有傳輸的資料都會被加密。但是,可能會有別的伺服器在冒充真正的伺服器,無法避免被“中間人”攻擊。
第二種級別(基於密匙的安全驗證),需要依靠密匙,也就是你必須為自己建立一對密匙,並把公有密匙放在需要訪問的伺服器上。客戶端軟體會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在你在該伺服器的使用者根目錄下尋找你的公有密匙,然後把它和你傳送過來的公有密匙進行比較。如果兩個密匙一致,伺服器就用公有密匙加密“質詢”(challenge)並把它傳送給客戶端軟體。從而避免被“中間人”攻擊。
在伺服器端,SSH也提供兩種安全驗證。
第一種方案,主機將自己的公用金鑰分發給相關的客戶端,客戶端在訪問主機時則使用該主機的公開金鑰來加密資料,主機則使用自己的私有金鑰來解密資料,從而實現主機金鑰認證,確定客戶端的可靠身份。
第二種方案,存在一個金鑰認證中心,所有提供服務的主機都將自己的公開金鑰提交給認證中心,而任何作為客戶端的主機則只要儲存一份認證中心的公開金鑰就可以了。在這種模式下,客戶端必須訪問認證中心然後才能訪問伺服器主機。
實驗環境:
解決方案:
可以通過客戶端或者伺服器端提供ssh安全認證
1.客戶端提供ssh安全認證,也就是上面提到第二種級別
(1).客戶端
利用客戶端linux系統提供ssh安全認證,如客戶端是XP系統,可以選擇用SecureCRT自動生成ssh2的公鑰與私鑰.
由於本地系統是windows 7 ,這裡使用SecureCRT生成ssh認證。
SecureCRT—Options—Global Options—-SSH2
完成後會在C:UsersAdministratorAppDataRoamingVanDyke目錄自動生成以Identity命名公鑰與私鑰.
(2)伺服器端
為了server安全性考慮,禁止空密碼與密碼登入系統。
需修改/etc/ssh/sshd.conf
#PermitEmptyPasswords no 修改為 PermitEmptyPasswords no
PasswordAuthentication yes ========= PasswordAuthentication no
[root@viong .ssh]# service sshd restart
需要重啟ssh才能使配置生效
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@viong ~]# ssh localhost
The authenticity of host `localhost (127.0.0.1)` can`t be established.
RSA key fingerprint is 05:de:f8:d8:7b:db:36:0a:1e:01:cc:06:64:0e:7e:0a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added `localhost` (RSA) to the list of known hosts.
root@localhost`s password: 輸入系統密碼
Last login: Tue Feb 23 00:32:06 2010 from 192.168.15.253
[root@viong ~]# cd ~/.ssh
利用RZ小工具上傳剛剛客戶端生成的Identity.pub到~/.ssh目錄下
關於RZ 與SZ的安裝請看http://viong.blog.51cto.com/844766/260081
[root@viong .ssh]#rz
上傳Identity.pub
[root@viong .ssh]# cat Identity.pub >>authorized_keys
把公鑰的內容輸出到authorized_keys
[root@viong .ssh]# rm -rf Identity.pub
刪除公鑰
[root@viong .ssh]# chmod 400 authorized_keys
設定authorized_keys的許可權為400
[root@viong .ssh]# ll
total 12
-r——– 1 root root 608 Feb 23 02:38 authorized_keys
-rw-r–r– 1 root root 391 Feb 23 02:34 known_hosts
重新連線伺服器,提示金鑰輸入密碼,說明設定成功了.
======================================================================
客戶端與伺服器端都是linux系統基於RSA認證無私鑰保護密碼情況下
Client:192.168.15.50 server:192.168.15.64
Clinet:
[root@client .ssh]# pwd
/root/.ssh 如沒這個目錄,可以手動新增
[root@client .ssh]# 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 viong.
Your public key has been saved in id_rsa .pub.
The key fingerprint is:
f9:14:16:7f:a8:68:f2:90:46:2e:28:b8:45:cc:aa:e9 root@client
[root@client .ssh]# ll
total 8
-rw——- 1 root root 1675 Feb 23 22:21 id_rsa
-rw-r–r– 1 root root 393 Feb 23 22:21 id_rsa .pub
[root@client .ssh]# ssh-copy-id -i /root/.ssh/id_rsa .pub root@192.168.15.64
釋出公匙到伺服器端,會在伺服器端自動生成.ssh/authorized_keys這個檔案
20
reverse mapping checking getaddrinfo for macbook_air failed – POSSIBLE BREAK-IN ATTEMPT!
root@192.168.15.64`s password: 輸入192.168.15.64的root密碼
Now try logging into the machine, with “ssh `192.168.15.64`”, and check in:
.ssh/authorized_keys
to make sure we haven`t added extra keys that you weren`t expecting.
提示:ssh-copy-id 這個工具是針對22號埠,如果對方ssh埠是2520,那麼就要修改為:
ssh-copy-id -i /root/.ssh/ id_rsa .pub “-p 2520 192.168.15.64”
Server:
[root@server .ssh]# ll
檢視是否有authorized_keys生成
total 16
-rw-—— 1 root root 393 Feb 23 22:28 authorized_keys
-rw-r–r– 1 root root 395 Feb 23 21:49 known_hosts
[root@server .ssh]# cat authorized_keys確認是否釋出成功
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtUOq6yotBEkldfBFZalh4FrFtX6wERChbLn7igQI4aofBNThWgIlBPfaThncfhs2Vu9DSBxExyGje/evcu/TyQRVBTuejEQnF4RPB+5fNMS+Qq48pdS33Rd/yt4m+Np/eGYDYW/ch5r/MRm5nek/WCW2MPAQbqrSZ7prj++SnMlavZDlAVsgHbY3GLYDD/7UbFJvewbY099zjSrW7yqIPdF9nACIg0dN+aMRtezJwr+NvOFZwrUuuz/ek1iCl2Q6soxRAkOTWbkE5bnF5LJJWtOox+ZxDu/mAry0dSv3eH0NMs6NPfBkwE5pyE9HG47r7k6kp7qKsuKCysk+MASNaQ== root@client
在客戶端輸入
[root@client .ssh]# ssh root@192.168.15.64
Last login: Wed Feb 24 00:13:09 2010 from 192.168.15.50
注意:Enter file in which to save the key (/root/.ssh/id_rsa): 直接回車—這個地方不能輸入名稱,不然無密碼登陸會報以下錯誤:
Permission denied (publickey,gssapi-with-mic
可以等生成後再做修改
===================================================================
[root@server ~]# 連線成功
提示:由於生成金鑰的口令的密碼為空,可以利用scp遠端加密備份,scp是有Security的檔案copy,基於ssh登入。操作起來比較方便,比如要把當前一個檔案copy到遠端另外一臺主機上,可以如下命令。
[root@clinet .ssh]# scp id_dsa.pub root@192.168.15.64:/home/
reverse mapping checking getaddrinfo for macbook_air failed – POSSIBLE BREAK-IN ATTEMPT!
id_dsa.pub 100% 601 0.6KB/s 00:00
[root@server .ssh]# ll /home/
total 4
-rw-r–r– 1 root root 601 Feb 24 00:25 id_dsa.pub 說明拷貝成功
如果想反過來操作,把檔案從遠端主機copy到當前系統,也很簡單。
[root@server home]# scp id_dsa.pub root@192.168.15.50:/home/
The authenticity of host `192.168.15.50 (192.168.15.50)` can`t be established.
RSA key fingerprint is 05:de:f8:d8:7b:db:36:0a:1e:01:cc:06:64:0e:7e:0a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added `192.168.15.50` (RSA) to the list of known hosts.
Address 192.168.15.50 maps to ysgame2-pc, but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!
root@192.168.15.50`s password: 輸入client密碼
id_dsa.pub 100% 601 0.6KB/s 00:00
[root@clinet .ssh]# ll /home/
total 4
-rw-r–r– 1 root root 601 Feb 24 00:29 id_dsa.pub 說明拷貝成功
2.伺服器端提供ssh安全認證,也就上面提到第一種方案
(1)伺服器端(AS5)
同樣修改/etc/ssh/sshd.conf
#PermitEmptyPasswords no 修改為 PermitEmptyPasswords no
PasswordAuthentication yes ========= PasswordAuthentication no
[root@viong .ssh]# service sshd restart
需要重啟ssh才能使配置生效
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@viong ~]# ssh localhost
第一次通過ssh命令登入伺服器時,要輸入“yes”,再輸入本地伺服器的密碼,登入資訊記入到使用者主目錄下.ssh的known_host檔案中。
The authenticity of host `localhost (127.0.0.1)` can`t be established.
RSA key fingerprint is 05:de:f8:d8:7b:db:36:0a:1e:01:cc:06:64:0e:7e:0a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added `localhost` (RSA) to the list of known hosts.
root@localhost`s password: 輸入系統密碼
Last login: Tue Feb 23 00:32:06 2010 from 192.168.1.253
[root@viong ~]#cat known_hosts
localhost ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAy1OKMCYaKdT544qv0hRBBC6rFZviEJ6ECwnBV/mNkwahgkPp5TTHyHDUeBPtYmmKVdcxgjItUtTBHFPQjN2aKwNmPfikqf0WoaN7yf2F6IVAyAIaIi5jXwkJzadW61izmCEkdi/33r4oj5uoNfTjMBfghZZzrMwGZHEaEg2nWbbhMJrzuMU6v31WhjPm6MlZ+xBoR7T2iqiDyUczzSJZ2KG2rPMTG6Zdxm+WLrioOoeIn25wY+4gsrpPUGHxQsxVNIpUP6UtGZA/Y9uksgN5OSIkSxRwGPDTCp65mYQ7pDo9Pvbxg1yQFs54+zA2XcsKz55mbn0MMucPrOxbfGtIEQ==
以上連線是基於口令認證,相對telnet還是很安全.但還是會受到“中間人”攻擊
[root@viong ~]# cd ~/.ssh
[root@viong ~]# ssh-keygen -t dsa 生成公鑰與私鑰
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): viong 金鑰檔名
Enter passphrase (empty for no passphrase): 輸入口令
Enter same passphrase again: 再次輸入口令
Your identification has been saved in viong.
Your public key has been saved in viong.pub.
The key fingerprint is:
cf:fd:14:c1:7c:eb:de:e4:5e:bb:91:6a:70:57:1c:8e root@viong
[root@viong .ssh]# ll
total 12
-rw-r–r– 1 root root 391 Feb 23 02:34 known_hosts
-rw——- 1 root root 736 Feb 23 03:08 viong
-rw-r–r– 1 root root 600 Feb 23 03:08 viong.pub
[root@viong .ssh]# cat viong.pub >>authorized_keys
把公鑰的內容輸出到authorized_keys
[root@viong .ssh]# chmod 400 authorized_keys
設定authorized_keys的許可權為400
(2)客戶端(WIN 7-SecureCRT)
把viong 私鑰和viong.pub公鑰用sz小工具下載到本地同一個目錄
[root@viong .ssh]#sz viong
[root@viong .ssh]#sz viong.pub
[root@viong .ssh]# rm -rf viong.pub
[root@viong .ssh]# rm -rf viong
刪除公鑰與金鑰
用SecureCRT測試連線,如下圖,說明連線成功。
關於大批量伺服器更改key的指令碼,後面會更新上去.
備註:關於 /etc/ssh/sshd.conf詳解,轉載了鳥哥的文章給大家參考。
本文轉自viong 51CTO部落格,原文連結:http://blog.51cto.com/viong/278062,如需轉載請自行聯絡原作者
相關文章
- 雙因素認證解決方案
- 關於不完全型別的認識型別
- 關於git的ssh-key:解決本地多個ssh-key的問題Git
- SSH auth method: private key 的解決方案
- 關於AppDelegate瘦身的多種解決方案APP
- 關於Create React App不支援裝飾器的終極無傷解決方案ReactAPP
- 網線和光纖測試及認證的解決方案
- 關於HttpClient繞過SSL認證以及NTLM認證HTTPclient
- 關於os認證和口令檔案認證(轉)
- 一個基於ASP.NET Core完全開源的CMS 解決方案ASP.NET
- 關於不同的MySQL複製解決方案概述MySql
- 關於Support for password authentication 報錯的解決方案
- 作業系統(AIX)雙因素身份認證解決方案作業系統AI
- 防火牆(360天堤)雙因素身份認證解決方案防火牆
- 基於vue 做了關於token驗證的例項,和移動端下fixed失效的解決方案Vue
- 「Adobe國際認證」關於 Photoshop 圖層詳解
- Redis 大key(bigkey)問題的排查與解決方案Redis
- 關於SSL協議未開啟的解決方案協議
- 關於React Native報Cannot access ‘serviceOf‘的解決方案React Native
- 一款基於.NET Core的認證授權解決方案-葫蘆藤1.0開源啦
- Flutter : 關於 KeyFlutter
- 認證授權方案之JwtBearer認證JWT
- 幹掉Session?這個跨域認證解決方案真的優雅!Session跨域
- 關於0xc000007b的一種解決方案
- 南師關於漏丹的一套解決方案
- 關於shiro安全框架和shiro的認證流程框架
- 關於內外網資料同步解決方案
- 『JWT』,你必須瞭解的認證登入方案JWT
- 關於NAND FLASH解釦的認識NaN
- java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 報錯的解決方案JavaSQLException
- AWS 認證解決方案架構師 – 助理級 (AWS Certified Solutions Architect – Associate)架構
- Ubuntu上關於PyCharm不能用matplotlib畫圖的解決方案UbuntuPyCharm
- AntV G6 關於多邊繪製的解決方案
- 關於 Serverless,以及推薦一個好用的 Naive 解決方案ServerAI
- 關於區塊鏈技術安全隱患的解決方案區塊鏈
- 關於Cannot resolve scoped service from root provider解決方案IDE
- 關於 larabbs yarn 安裝加速不能用解決方案Yarn
- 關於SSL證書雙向認證該怎麼操作
- 移動端canvas不支援rem的解決方案CanvasREM