====== SSH 不需要密碼登入方式 ======
SSH 可以透過憑證信任的方式來直接登入, 適合用於 rsync 備份資料等背景程式自動執行處理作業
===== Alpine =====
- 產生 ssh key (id_rsa / id_rsa.pub)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 將 ssh 公鑰(id_rsa.pub) 複製到遠端要登入的主機內 Exp. root@192.168.11.185
ssh-copy-id root@192.168.11.185
- 這樣就可以使用 ssh root@192.168.11.185 直接登入
===== Ubuntu =====
以下介紹 ServerA 的 jonathan 可以直接使用 jonathan_serb.key 登入 jonathan@ServerB 的設定方式
==== jonathan@ServerB 的設定 ====
* 產生連入的 key
mkdir -p /home/jonathan/.ssh; ssh-keygen -t rsa -C 'jonathan\@servera.ichiayi.com' -f /home/jonathan/.ssh/jonathan_serb -q -N ''
cat /home/jonathan/.ssh/jonathan_serb.pub >> /home/jonathan/.ssh/authorized_keys
chmod -R go= /home/jonathan/.ssh
chown -R jonathan:jonathan /home/jonathan/.ssh
* 將產生的 key /home/jonathan/.ssh/jonathan_serb 傳送到 ServerA Exp.
scp /home/jonathan/.ssh/jonathan_serb jonathan@servera.ichiayi.com:/home/jonathan/.ssh/jonathan_serb.key
==== jonathan@ServerA 的設定 ====
* 設定 key 權限
chmod 600 /home/jonathan/.ssh/jonathan_serb.key
* 驗證使用 key 連入主機
ssh -i /home/jonathan/.ssh/jonathan_serb.key -o "StrictHostKeyChecking no" jonathan@servera.ichiayi.com
===== CentOS =====
以下介紹 ServerA 的 root 可以直接登入 ServerB 的 root 設定方式
==== ServerA 的設定 ====
su - root
cd .ssh
ssh-keygen -d
會產生 id_dsa.pub
scp id_dsa.pub ServerB:/root/.ssh/ServerA_authorized_keys2
==== ServerB 的設定 ====
su - root
cd .ssh
cat ServerA_authorized_keys2 >> authorized_keys2
==== 無法登入可能原因 ====
依據之前的測試經驗, 如果這樣還出現需要輸入密碼, 則需檢查 authorized_keys2 的存取權限, 最好改成只有自己可以讀取與修改, 其他或群組成員均不能讀取與修改
su - root
cd .ssh
chmod 600 authorized_keys2
===== 參考網址 =====
* https://xenby.com/b/220-%E6%95%99%E5%AD%B8-%E7%94%A2%E7%94%9Fssh-key%E4%B8%A6%E4%B8%94%E9%80%8F%E9%81%8Ekey%E9%80%B2%E8%A1%8C%E5%85%8D%E5%AF%86%E7%A2%BC%E7%99%BB%E5%85%A5
{{tag>ssh 密技}}