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

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

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

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


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

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

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

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

 PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys

 

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

    預設會以 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. 確認公私鑰是否有正確產生
    ls -l ~/.ssh/
    

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

  3. 將公鑰上傳至我們的目標伺服器 B, penny 用戶的家目錄
    scp 或 sftp …將公鑰檔案上傳就對了XD
  4. 登入B伺服器,penny用戶
    若 .ssh 資料夾不存在

    mkdir .ssh
    chmod 700 .ssh
    
  5. 將公鑰放至 authorized_keys
    touch .ssh/authorized_keys
    cat id_rsa.pub > .ssh/authorized_keys
    

    PS. authorized_keys 權限須為 644

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

Leave a Reply