前言
在使用 scp, rsync 等工具傳送檔案時,需要手動輸入密碼才可進行操作,但如果我們想要使用 crontab 排程定時備份資料時,就無法手動輸入密碼再進行備份,因此這一篇文章主要紀錄如何設定 SSH 不需要密碼即可登入。
設定
首先,我們需要有兩台主機的使用者,以下稱兩台主機分別為 local 及 remote,local 的使用者為 user1, remote 的使用者則是 user2.
Local
接著我們在 local 透過 ssh-keygen 來建立 private key 和 public key.
先切換到 .ssh/, 並確認資料夾權限為 700:
1 | $ cd ~/.ssh/ |
執行 ssh-keygen 指令,建立 private key 和 public key, 演算法可以選擇 rsa 或 dsa,預設是 rsa:
1 | $ ssh-keygen -t rsa # 過程中一直按 Enter 即可 |
執行完後,會在 ~/.ssh/ 中看到以下檔案:
- id_rsa: private key, 權限必須是
600. - id_rsa.pub: public key, 權限為
644.
將 public key 傳送到 remote:
1 | $ scp id_rsa.pub user2@remote:~/ |
Remote
登入 remote 主機後,先確認是否有 ~/.ssh/,如果沒有則需要自行建立,並將權限設為 700.
接著將剛才傳來的 public key id_rsa.pub append to ~/.ssh/authorized_keys:
1 | $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys |
注意: authorized_keys的權限必須是 644.
完成後就不需要密碼就可以從 local 的 user1 用戶登入 remote 的 user2 用戶囉~