Skip to content

[linux] 利用 ssh-keygen 建立不須密碼登入的 ssh 用戶

Published: at 07:37 AM (3 min read)

當我們使用 scp 及 rsync 等這類備份工具時,由於登入遠端伺服器時,需要透過互動式的介面做密碼登入。

若我們希望透過 crontab 等排程工具做定時備份時,無法透過互動式的介面登入遠端伺服器。

因此,我們必須設法透過 ssh 的公私鑰機制,設定彼此信任後,將可不須密碼登入。


由於 ssh 是透過公私鑰機制加密彼此間的連線,因此我們可以透過 ssh-keygen 產生公私鑰來設定信任的使用者與主機

假設我們現在希望從 A 主機 camel 用戶 登入=> B 主機 penny 用戶

前提是你要有 A主機 camel 用戶帳密及 B 主機 penny 用戶帳密(…廢話XD)

然後B主機 ssh 設定(/etc/ssh/sshd_config)必須要有開啟可以使用自製的信任公鑰登入

[code] PubkeyAuthentication yes # AuthorizedKeysFile .ssh/authorized_keys [/code]

  1. A 主機 camel 用戶,利用 ssh-keygen 產生兩把鑰匙(公私鑰)

    [code] ssh-keygen [/code]

    預設會以 RSA 加密產生公私鑰 Enter file in which to save the key (/home/camel/.ssh/id_rsa): Enter(確認檔案放置位置) Enter passphrase (empty for no passphrase): Enter(不設定密碼) Enter same passphrase again: Enter(不設定密碼) PS. 記得要確認 ~/.ssh/ 的權限為 700

  2. 確認公私鑰是否有正確產生

    [code] ls -l ~/.ssh/ [/code]

    id_rsa => 私鑰 (權限為 600) id_rsa.pub => 公鑰 ( 權限為 644)

  3. 將公鑰上傳至我們的目標伺服器 B, penny 用戶的家目錄 scp 或 sftp …將公鑰檔案上傳就對了XD

  4. 登入B伺服器,penny用戶 若 .ssh 資料夾不存在

    [code] mkdir .ssh chmod 700 .ssh [/code]

  5. 將公鑰放至 authorized_keys

    [code] touch .ssh/authorized_keys cat id_rsa.pub > .ssh/authorized_keys [/code]

    PS. authorized_keys 權限須為 644

  6. 可以嘗試從 A伺服器 camel 用戶登入囉! 就不須密碼了!