【參考文章】:linux服務器ssh免密碼登錄
【參考文章】:ssh分發秘鑰時出現錯誤“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)”
【參考文章】:ssh免密碼登錄Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的解決方案!
【參考文章】:ssh配置無密碼登錄
1. 生成服務器的公鑰和私鑰文件
輸入命令:ssh-keygen -t rsa
提示輸入點擊回車,直到文件生成;
默認生成的文件在 ~/.ssh 目錄下;
.ssh 文件夾為隱藏文件, ls -a 即可顯示全部文件;
2. 將公鑰文件內容追加到authorized_keys 文件
如果沒有 authorized_keys 文件,則手動創建;
然后將 id_rsa.pub 文件內容復制到 authorized_keys 文件;
cat id_rsa.pub >> authorized_keys ;
注意 > 是講內容重寫到文件,>> 是將內容追加到文件;
id_rsa.pub 文件的內容,其中帶有當前的用戶名,免密登錄時需要使用該用戶來登錄
3. 修改文件權限
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys # 信任文件的權限,必須是644
chmod 600 ~/.ssh/id_rsa # 私鑰文件的權限
4. 修改 /etc/ssh/sshd_config
下面參數選項沒有則手動創建,有注釋則取消注釋,參數值不符合則修改;
HostKey /etc/ssh/ssh_host_rsa_key
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #公鑰文件存儲位置
UsePAM no # CentOS 7.5 中需要修改為 yes
下面參數選項根據自身需要進行修改;
PasswordAuthentication yes #允許密碼認證登錄(不要手賤設置為 no, 不然你就登不上服務器了)
PermitRootLogin no #允許root認證登錄
重啟 SSH 服務
systemctl restart sshd.service
5. 本地免密登錄
ssh 用戶名@127.0.0.1
6. 遠程免密登錄
A服務器下的.ssh 文件下保存了B服務器用戶userB的公鑰,則userB就可以在B服務器上免密登錄服務A了
想要遠程免密登錄某個服務器,就把自己的 id_rsa.pub(公鑰文件) 追加到某個服務器的 .ssh/authorized_keys 文件中;
ssh username@serverIP