場景:服務器B (192.168.1.101)免密登錄A(192.168.1.100)服務器
1、登錄服務器B
①生產公鑰
ssh-keygen -t rsa Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
注意:1、在第二步的時候千萬不要改名,采坑的教訓;2、普通用戶(非root),先切換到用以登錄的用戶
②上傳公鑰到服務器A
cd .ssh scp id_rsa.pub root@192.168.100.100:/root
2、登錄服務器A(被免費登錄服務器)
cd /root/.ssh cat ../id_rsa.pub >> authorized_keys
若為普通賬號(非root),則目錄為 /home/用戶名/.ssh/authorized_keys,不存在目錄或文件就先創建
3、免密登錄多台服務器
在執行ssh-keygen -t rsa的時候如果不輸入文件名,會替換掉id_rsa文件,即上一次通過該文件設置的密碼登錄將失效,要支持免密登錄多台服務器需要生成秘鑰的的時候指定新的文件名
然后在B服務器.ssh目錄編輯文件:config,該文件沒有擴展名,通過該文件來指定秘鑰,如下
Host 172.16.4.220 HostName 172.16.4.220 IdentityFile ~/.ssh/id_rsa_robot User robot
host和hotsname都指定主機域名或ip地址
IdentityFile 指定密鑰文件
User 指定登錄的賬號
4、如果ssh免密登錄失敗可以增加 -vvv參數查看登錄日志
ssh 客戶端日志:ssh user@ip -vvv
新啟動一個帶debug的ssh服務端:通過執行 /usr/sbin/sshd -d -p 2222 (在2222端口啟動一個帶debug輸出的sshd,注意防火牆問題)
5、其它問題
Bad owner or permissions on .ssh/config的解決
當為本機配一個固定用戶名遠程登錄某主機時,配置了一個config文件,但是在執行ssh免密碼登錄時報如下的錯誤:Bad owner or permissions on .ssh/config的解決。
經過查找資料發下解決辦法如下:
sudo chmod 600 config
Authentication refused: bad ownership or modes錯誤解決方法
sshd為了安全,對屬主的目錄和文件權限有所要求。如果權限不對,則ssh的免密碼登陸不生效。
用戶目錄權限為 755 或者 700,就是不能是77x。
.ssh目錄權限一般為755或者700。
rsa_id.pub 及authorized_keys權限一般為644
rsa_id權限必須為600
解決方法
檢測目錄權限,把不符合要求的按要求設置權限即可。