SSH 免密碼登入(公開金鑰認證)是 Linux 運維自動化的基石。本文以 CentOS 5.3/5.8 為例,說明客戶端產生金鑰對、將公鑰部署至伺服器、設定權限與驗證的標準流程。
| 角色 | IP | 說明 |
|---|---|---|
| 伺服端 (Server) | 222.73.115.198 | CentOS 5.3,接受連線 |
| 客戶端 (Client) | 192.168.4.244 | CentOS 5.8,發起連線 |
ssh-keygen)~/.ssh/authorized_keys 並設定權限[root@client ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): # 直接 Enter 使用預設
Enter passphrase (empty for no passphrase): # 直接 Enter 無密碼金鑰
Enter same passphrase again: # 直接 Enter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
04:45:0b:47:10:92:0c:b2:b9:d7:11:5b:49:05:e4:d9 root@client
[root@client ~]# ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
# id_rsa : 私鑰 (嚴禁外洩,權限 600)
# id_rsa.pub : 公鑰 (需部署至伺服器)
# known_hosts : 已知主機金鑰指紋
方式一:ssh-copy-id (推薦,自動處理權限)
[root@client ~]# ssh-copy-id root@222.73.115.198
# 輸入伺服器 root 密碼,自動完成複製與權限設定
方式二:手動複製 (理解原理)
# 客戶端
scp ~/.ssh/id_rsa.pub root@222.73.115.198:/tmp/id_rsa.pub.client
# 伺服器
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat /tmp/id_rsa.pub.client >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub.client
# /etc/ssh/sshd_config 關鍵參數
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes # 若以 root 登入需開啟
PasswordAuthentication no # 可選:強制僅允許金鑰登入
# 修改後重啟服務
service sshd restart
[root@client ~]# ssh root@222.73.115.198
Last login: ...
[root@server ~]# # 成功進入無需密碼
| 路徑 | 權限 | 擁有者 |
|---|---|---|
~/.ssh | 700 (drwx------) | 使用者 |
~/.ssh/id_rsa | 600 (-rw-------) | 使用者 |
~/.ssh/id_rsa.pub | 644 (-rw-r--r--) | 使用者 |
~/.ssh/authorized_keys | 600 (-rw-------) | 使用者 |
任何權限過寬 (group/other 可讀寫) 會導致 SSH 拒絕使用該金鑰。
~/.ssh/。ssh-keygen -f ~/.ssh/id_rsa_myserver,連線時 ssh -i ~/.ssh/id_rsa_myserver user@host。~/.ssh/config 管理多主機:
Host myserver
HostName 222.73.115.198
User root
IdentityFile ~/.ssh/id_rsa_myserver
Port 22
之後直接 ssh myserver 即可。
ed25519 金鑰:ssh-keygen -t ed25519 (更短、更快、更安全)。ssh-keygen -p 修改密語。authorized_keys 移除)。Fail2Ban 防暴力破解,限制 SSH 連線來源 IP。SSH 免密碼登入是自動化部署、備份同步、叢集管理的前置條件。標準化金鑰管理流程,能大幅提升運維效率與安全性。
Linux 線上替換運行中文件:避開 cp 陷阱,掌握 mv/rsync 原子性替換之道
RedHat/CentOS 安装 Fluentd 日志收集器:从 Ruby 环境准备到 Gem 安装
Ubuntu 查殺殭屍進程 (Zombie Process):ps 找出 PID/PPID → kill -HUP 父進程清理
Linux 系統重啟/關機指令完整指南:shutdown、reboot、halt、systemctl、telinit 差異與最佳實務
Linux Docker 鏡像瘦身實戰:從 1GB 縮減至 10MB 的極簡 Dockerfile 寫法