Secure Shell 協議,簡稱 SSH,是一種加密網絡協議,用於客戶端和主機之間的安全連接,並支持各種身份驗證機制,目前最實用的身份驗證機制就是基於密碼的身份驗證和基於公鑰的身份驗證兩種。Linux系統如何設置基於 SSH 密鑰的身份驗證,以及如何免密連接到主機的教程。
第一步:檢查現有的 SSH 密鑰對
首先檢查主要是為了不覆蓋現有密鑰。運行以下Is 命令以查看,存在可以使用這些密鑰並跳過第二步,或備份舊密鑰並生成新密鑰。如果看到 No such file or directory 或 no matches found 意味着沒有 SSH 密鑰,則可以繼續執行下一步並生成新密鑰。
ls -al ~/.ssh/id_*.pub
第二步:生成新的 SSH 密鑰對
以下命令將生成一個新的 4096 位 SSH 密鑰對,並將電子郵件地址作為注釋:
ssh-keygen -b 4096 -C Email@qq.com
ssh-keygen常見參數:
-t:指定生成密鑰的類型,默認使用SSH2d的rsa -f:指定生成密鑰的文件名,默認id_rsa(私鑰id_rsa,公鑰id_rsa.pub) -b:指定密鑰長度(bits),RSA最小要求768位,默認是2048位;DSA密鑰必須是1024位(FIPS 1862標准規定) -C:添加注釋; -P:提供舊密碼,空表示不需要密碼(-P ‘’) -N:提供新密碼,空表示不需要密碼(-N ‘’) -R hostname:從known_hosta(第一次連接時就會在家目錄.ssh目錄下生產該密鑰文件)文件中刪除所有屬於hostname的密鑰 -e:讀取openssh的私鑰或者公鑰文件; -i:讀取未加密的ssh-v2兼容的私鑰/公鑰文件,然后在標准輸出設備上顯示openssh兼容的私鑰/公鑰; -l:顯示公鑰文件的指紋數據; -q:靜默模式;
按 Enter 接受則默認文件位置和文件名:
Enter file in which to save the key(/home/yourusername/.ssh/id_rsa):
接下來,ssh-keygen 工具將要求輸入安全密碼(如果不想使用密碼短語,請按 Enter:),您如果選擇使用密碼短語,將獲得額外的安全保護。多數情況下,開發人員和系統管理員使用 SSH 而不使用密碼,因為它們對完全自動化的流程很有用。
第三步:檢查下.ssh目錄下authorized_keys文件是否存在,存在直接跳過第三步
沒有的話,創建一個,然后將id_rsa.pub的內容追加到authorized_keys文件尾。
cd .ssh touch authorized_keys ->如果ssh中存在此文件則省略此步驟 cat id_rsa.pub >> authorized_keys -> 將id_rsa.pub的內容追加到authorized_keys
第四步:檢測,是否需要修改ssh的配置(可忽略)
[root@centos-004 .ssh]#vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys
這里有一點很重要,在你配置密鑰登錄成功之前,千萬不要太自信將PasswordAuthentication 設置no,否則你密鑰登錄不了,然后又禁止密碼登錄,就悲劇了。在密鑰登錄設置成功之后,可以將PasswordAuthentication 設置為no,禁用密碼登錄了,比較安全。
第五步:復制公鑰
生成SSH 密鑰對后,為實現沒有密碼登錄到主機,需要將公鑰復制到要管理的主機。將公鑰復制到主機的最簡單方法是使用名為的命令 ssh-copy-id 。在本地主機終端類型:
ssh-copy-id remote_username@server_ip_address
系統將提示輸入 remote_username 的密碼:
remote_username@server_ip_address's password:
用戶通過身份驗證后,公鑰將附加到遠程用戶 authorized_keys 文件,並且將關閉連接。如果由於某種原因, ssh-copy-id 本地主機上沒有該實用程序,則可以使用以下命令復制公鑰:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
第六步:使用 SSH 密鑰登錄
完成上述步驟后,就能夠登錄到遠程主機而不會被提示輸入密碼,測試口令:
ssh remote_username@server_ip_address
https://blog.csdn.net/qq_27870421/article/details/94594492
http://baijiahao.baidu.com/s?id=1648175338751747914&wfr=spider&for=pc