當我們使用 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]
-
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
-
確認公私鑰是否有正確產生
[code] ls -l ~/.ssh/ [/code]
id_rsa => 私鑰 (權限為 600) id_rsa.pub => 公鑰 ( 權限為 644)
-
將公鑰上傳至我們的目標伺服器 B, penny 用戶的家目錄 scp 或 sftp …將公鑰檔案上傳就對了XD
-
登入B伺服器,penny用戶 若 .ssh 資料夾不存在
[code] mkdir .ssh chmod 700 .ssh [/code]
-
將公鑰放至 authorized_keys
[code] touch .ssh/authorized_keys cat id_rsa.pub > .ssh/authorized_keys [/code]
PS. authorized_keys 權限須為 644
-
可以嘗試從 A伺服器 camel 用戶登入囉! 就不須密碼了!