Mac OS下免密碼SSH登錄遠程主機

使用密碼通過ssh登錄遠程主機既不安全也不方便,Mac OS下我們可以很方便地通過生成一對公私鑰來免密碼登錄遠程主機,首先在終端通過以下命令生成一對公私鑰:

ssh-keygen -t rsa

輸入命令後系統第一個問題是問密鑰的id,這裡要說明一下,一對公私鑰可以多個主機反覆使用,不需要重複生成,因此默認即可。接著系統會詢問輸入密碼,我們生成密鑰就是為了免密碼登錄,因此這裡直接回車,不要輸入密碼。執行完這個命令後在~/.ssh目錄下會生成id_rsa和id_rsa.pub兩個文件。

id_rsa是私鑰,id_rsa.pub是公鑰,公鑰我們需要上傳至目標服務器,通過scp命令上傳(假設遠程主機用戶名為:user,主機域名為:yourhost.com,下同):

scp ~/.ssh/id_rsa.pub user@yourhost.com:~/.ssh/

需要說明的是,通過哪個用戶登錄就得把公鑰上傳至該用戶的~/.ssh下,不可搞錯。如果因為遠程主機用戶名下沒有.ssh這個目錄,會提示上傳失敗,則需要先用密碼登錄遠程主機創建這個目錄:

mkdir ~/.ssh

接著,需要把公鑰寫入認證文件,在遠程主機中輸入以下命令:

touch ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

更改目錄權限,適當保護一下.ssh目錄和認證文件:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

接著我們需要修改ssh服務的配置文件:

vim /etc/ssh/sshd_config

插入下面這行代碼:

AuthorizedKeysFile ~user/.ssh/authorized_keys

保存,並重啓ssh服務:

/etc/init.d/ssh restart

接著試試登錄,應該無需密碼登錄遠程主機了。

為安全我們可以禁用密碼登錄遠程主機,在ssh的配置文件中增加這麼一行即可:

PasswordAuthentication no

此外,可以寫一個config文件,記錄ssh遠程服務器、用戶名和端口的信息,進一步減少“鍵入”的字符數:

vim ~/.ssh/config

這麼寫:

Host XXX
HostName IP or DOMAIN
Port 22
User root

然後登録只需要ssh XXX即可。

本文參考了「SSH 免密碼登入」一文,並且這篇文章詳述了公私鑰驗證與登錄的原理,推薦仔細閱讀。

发表评论

电子邮件地址不会被公开。 必填项已用*标注