0%

[Linux] 設定 SSH 免密碼登入

前言

在使用 scp, rsync 等工具傳送檔案時,需要手動輸入密碼才可進行操作,但如果我們想要使用 crontab 排程定時備份資料時,就無法手動輸入密碼再進行備份,因此這一篇文章主要紀錄如何設定 SSH 不需要密碼即可登入。

設定

首先,我們需要有兩台主機的使用者,以下稱兩台主機分別為 localremotelocal 的使用者為 user1, remote 的使用者則是 user2.

Local

接著我們在 local 透過 ssh-keygen 來建立 private key 和 public key.

先切換到 .ssh/, 並確認資料夾權限為 700:

1
$ cd ~/.ssh/

執行 ssh-keygen 指令,建立 private key 和 public key, 演算法可以選擇 rsadsa,預設是 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.

完成後就不需要密碼就可以從 localuser1 用戶登入 remoteuser2 用戶囉~

參考資料