SSH 公鑰認證方式登入

一般情況下,我們用ssh遠端登入伺服器時,要輸入使用者名稱和密碼。這對經常維護系統的人來說,很麻煩。怎麼樣才能不用密碼直接登入遠端的linux/unix伺服器呢? ssh公鑰認證可以解決這個問題。

一般情況下,我們用ssh遠端登入伺服器時,要輸入使用者名稱和密碼。這對經常維護系統的人來說,很麻煩。怎樣才能不用密碼直接登入遠端的/unix伺服器呢? ssh公鑰認證可以解決這個問題。
公鑰認證,是使用一對加密字串,一個稱為公鑰(public key), 任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。 透過公鑰加密過的密文使用密鑰可以輕鬆解密,但根據公鑰來猜測密鑰卻十分困難。
在使用公鑰認證之前,先檢查伺服器的ssh設定檔/etc/ssh/sshd_config

RSAAuthentication yes # 啟用RSA 認證,預設為yes PubkeyAuthentication yes # 啟用公鑰認證,預設為yes

如果配置沒有問題,那麼你就可以進行下一步了。
以下我們舉個例子,例如有兩台機器,客戶機A與伺服器B,想用ssh公鑰認證方式從A機器用client用戶登入B機器的server用戶,方法如下:
1.在客戶機A上產生公鑰與金鑰

ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/client/.ssh/id_rsa): #此處直接按回車即可Created directory '/home/client/.ssh'. Enter passphras passphras: passphrase passphrase. #此處直接按回車即可Enter same passphrase again: #此處直接按回車即可Enter same passphrase again: #此處直接按回車即可Your identification has been saved in /home/client/.ssh/id_rsa. Your public key has been saved in /home/cliclient/.m/idr. f5:30:ba:10:ee:7a:c6:cf:d8:ec:3f:4c:b3:f1:09:6d client@linuxsong.org

這樣就產生了目前使用者client在這台機器的公鑰(/home/client/.ssh/id_rsa.pub )和私鑰(/home/client/.ssh/id_rsa).

2.將上一步產生的公鑰檔案拷貝到伺服器B上。然後將檔案內容追加到server使用者目錄的.ssh/authorized_keys中:

cat id_rsa.pub >> .ssh/authorized_keys

這樣,client用戶從客戶端登入伺服器的server用戶,就不用再輸入密碼了。
另外,如果在伺服器安全性比較高的情況下,可以設定使用者只允許公鑰認證,禁止使用者用密碼方式登入,只要修改一下伺服器的設定檔/etc/sshd/sshd_config

PasswordAuthentication no

修改完後要重新啟動sshd服務。
這樣用戶透過密碼方式登入時就會提示:

Permission denied (publickey,gssapi-with-mic)

有效的提高了系統的安全性。
注意:
.ssh 目錄的權限必須是0700
.ssh/authorized_keys 檔案權限必須是0600
否則公鑰認證不會生效。

評分

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *