前言
在使用 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
用戶囉~