SSH 免密登錄


免密登錄原理

img

​ 即在源服務器上先生成一份公鑰和一份密鑰,將公鑰復制到目標服務器,利用命令將公鑰添加至目標服務器的授權列表(authorized_keys)。當有服務器帶着公鑰申請連接服務器時,目標服務器首先在authorized_keys中查找是否存在該公鑰,如果存在則開始進行驗證。首先生成一個隨機字符串,利用對應公鑰進行加密,然后返回給申請連接的服務器,申請連接服務器利用私鑰進行解密,再將字符串返回給目標服務器完成驗證,進行后續操作。

實際操作

具體步驟:

  1. 生成密鑰對
  2. 將公鑰上傳至需要登錄的主機的授權列表 (authorized_keys)
  3. 建立連接時攜帶公鑰

需要登錄的主機:例子中為 crayonsea.top

1. 客戶端生成密鑰對

ssh-keygen -t rsa # 加密方式 rsa

上述命令會在 ~/.ssh/ 下生成 id_rsa id_rsa.pub

2. 上傳公鑰到服務器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@crayonsea.top

在目標服務器上可查看操作結果

cd ~/.ssh
vi authorized_keys

3. 測試免密登錄

ssh root@crayonsea.top

不能登錄的解決方法

實際操作中,可能會出現,在目標服務器的 authorized_keys 中已經寫入公鑰,卻不能免密登錄的情況。可以在兩個地方嘗試進行修改:(需要登錄的服務器上 crayonsea.top

1. 修改 /etc/ssh/sshd_config 文件內容

StrictModes no
AuthorizedKeysFile .ssh/authorized_keys

刪除 ~/.ssh/known_hosts

2. 修改 authorized_keys 文件權限

chmod 700 authorized_keys

1 和 2 操作完成后可以重啟一下 ssh,再次嘗試

service sshd restart

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM