業務背景:現有兩個機器;A(192.168.1.10)、B(192.168.1.20);
需要機器A可以免密登錄B,具體操作如下:
1、首先在機器A中,上生成 SSH 密鑰對(公鑰和私鑰)
生成不帶密碼的密鑰對(徹底免輸入),(通常在內網測試時可以接受),可以重新生成一個沒有 passphrase 的密鑰對
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
-
-N ""
表示不設置密碼 -
-f ~/.ssh/id_rsa 表示文件位置
-t rsa
:指定密鑰類型為 RSA。-b 4096
:指定密鑰長度為 4096 位(更安全)。-C "test"
:添加注釋(可選)。
生成的默認位置是:/root/.ssh?
- 默認情況下,密鑰會保存在?
~/.ssh/id_rsa
(私鑰)和?~/.ssh/id_rsa.pub
(公鑰)。
當然在生成的時候也可以按照提示指定具體的位置。
其中 id_rsa 和?id_rsa.pub 是私鑰和公鑰;
2、把公鑰放到B機器中
在A機器中使用如下命令,把公鑰放到B中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.20
或:ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.20?
-
username
是 B 上的目標用戶,比如ubuntu
或root
-
輸入 B 的密碼完成授權
這條命令會將 A 的公鑰添加到 B 的 ~/.ssh/authorized_keys
文件中。
然后就可以遠程免密連接了
ssh root@192.168.1.20
至此就可以進行其他相關操作了。若是都?正常正確,則不用繼續看👀以下內容。
3、其他注意事項,或可能出現的問題
1??無法遠程放置公鑰(如果 ssh-copy-id 不可用,也可以手動復制公鑰)
💡:手動移動,然后授權,添加公鑰內容
chmod 644 ~/.ssh/id_rsa.pub
添加公鑰內容?
cat id_rsa.pub >> authorized_keys
?授權
chmod 600 authorized_keys
2??確保密鑰生效
💡:查看B機器權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
💡:在 B 上查看 /etc/ssh/sshd_config配置
cat /etc/ssh/sshd_config
查看如下內容:
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果是,則無需修改,反之修改。若是修改了,則需要重新加載配置:
sudo systemctl restart ssh
3??其他報錯提示
root@ubuntu-VMware-Virtual-Platform:~/.ssh# ssh root@192.168.1.20
/etc/ssh/ssh_config: line 47: Bad configuration option: permitrootlogin
/etc/ssh/ssh_config: terminating, 1 bad configuration options
問題分析
-
錯誤原因
SSH 客戶端配置文件 (~/.ssh/config
) 不支持?permitrootlogin
?選項。這個選項屬于 SSH 服務端的配置(通常是?/etc/ssh/sshd_config
)。因此,將此選項寫入客戶端配置文件會導致解析錯誤。 -
定位問題位置
錯誤日志明確指出問題出在?/etc/ssh/ssh_config
?文件的第 47 行,表明該行包含了一個無效的配置項。
找到并刪除或注釋掉類似以下內容的行:
permitrootlogin yes
或者將其改為有效的客戶端配置選項(例如 User、Port 等)。
保存并退出編輯器。
至此!就是可以正常的免密登錄機器B了。