首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SSH 免密碼登錄失敗完整排查手冊:從密鑰生成到權限配置

     編輯:程式設計綜合問答

標準流程回顧

  1. 客戶端生成密鑰對:ssh-keygen -t rsa -b 4096
  2. 複製公鑰到服務端:ssh-copy-id user@host 或手動追加至 ~/.ssh/authorized_keys
  3. 服務端權限設置(關鍵):
    • chmod 700 ~/.ssh
    • chmod 600 ~/.ssh/authorized_keys
    • 確保 ~/.ssh 目錄擁有者為當前用戶
  4. 服務端 /etc/ssh/sshd_config 確認項:
    • PubkeyAuthentication yes
    • AuthorizedKeysFile .ssh/authorized_keys
    • PasswordAuthentication no(可選,禁用密碼登錄)
  5. 重啟 SSH 服務:systemctl restart sshd

常見失敗原因排查表

現象可能原因解決方法
仍提示輸入密碼authorized_keys 權限過寬(如 644)chmod 600 ~/.ssh/authorized_keys
提示 "Permission denied (publickey)"公鑰內容錯誤/換行符問題用 cat 查看公鑰應為單行,以 ssh-rsa 開頭
客戶端報 "Agent admitted failure to sign"ssh-agent 未運行或未添加私鑰eval $(ssh-agent -s); ssh-add ~/.ssh/id_rsa
SELinux 環境下失敗安全上下文錯誤restorecon -Rv ~/.ssh
家目錄加密導致無法讀取首次登錄需輸入密碼解密家目錄將 authorized_keys 移至 /etc/ssh/authorized_keys/用戶名 並修改 sshd_config

調試神器:詳細日誌模式

客戶端執行:

ssh -vvv user@host

關注輸出中的 debug1: Offering public key、debug1: Server accepts key、debug1: Authentication succeeded 等關鍵字。

Hadoop 專用配置補充

若為 Hadoop 集群配置,需確保:

  • 所有節點互信(雙向免密)
  • ~/.ssh/config 設置 StrictHostKeyChecking no 避免首次確認提示
  • 使用專用密鑰對(ssh-keygen -f ~/.ssh/hadoop_rsa),並在 config 指定 IdentityFile
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved