本文要講的,就是如何簡化從Mac登入Linux主機的操作步驟,提高效率。所謂的“免登陸”其實是不存在的,只是說,從驗證密碼的登入方式,改為公私密金鑰對的登入驗證方式。使用後者的方式,每次會由ssh用戶端自動發送驗證資訊,所以就免去了人工輸入密碼,看起來好像“免登陸”一樣。
關於這麼做的原理,大家可以自己去Google,關鍵詞是“非對稱式加密”,“RSA演算法”,“基於ssh金鑰組的自動登入”,等等,我就不多解釋了。我直接說操作步驟吧:
- 產生金鑰組
- 用密碼登入遠程主機,將公開金鑰拷貝過去
- done
怎麼樣,無敵簡單吧?
產生金鑰組
執行命令 ssh-keygen -t rsa
執行結果如下:
charles@mac:~ > ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/charles/.ssh/id_rsa):
Created directory ‘/Users/charles/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/charles/.ssh/id_rsa.
Your public key has been saved in /Users/charles/.ssh/id_rsa.pub.
The key fingerprint is:
c8:4b:85:87:90:7c:1a:67:b6:71:f5:51:0c:9d:a2:89 charles@TCMBP.local
The key’s randomart image is:
+–[ RSA 2048]—-+
| … .. o=.. |
| +.*o. …+ |
| Bo+o. o.. |
| …+E o |
| + S |
| . . |
| . |
| |
| |
+—————–+
注意:提示enter passphrase的時候,不要輸入,因為你本來就想少打一次密碼的,這裡如果設定了用密碼保護私密金鑰,那登入的時候還是要輸密碼,就白做了。
做完這個步驟後,cd ~/.ssh,你就可以看到你剛才產生的金鑰組,id_rsa是私密金鑰,id_rsa.pub是公開金鑰。下一步,就是把公開金鑰拷貝到目標主機上。
將公開金鑰拷貝到目標主機
用ssh登入到目標主機,然後cd ~/.ssh目錄,如果目錄不存在,那麼要自己建立mkdir -p ~/.ssh。你今後要用哪個帳戶登入主機,就在哪個帳戶的home目錄下操作,如果要免登陸root,就要去/root下操作。使用~比較好,不用多想了。
有了.ssh目錄後,進去,然後把id_rsa.pub傳過去,可以用scp命令,這裡要做的一個主要操作,就是將id_rsa.pub,的檔案內容,寫到一個叫authorized_keys的檔案中去,如果目標主機的相應使用者名稱下已經有了.ssh目錄和authorized_keys檔案,那你操作要小心一點,可能別人也做過免登陸的設定,這個時候你要小心不要把別人的設定給覆蓋了。如果沒有的話,就建立檔案touch ~/.ssh/authorized_keys,然後執行cat id_rsa.pub >> authorized_keys,將你的公開金鑰寫入到authorized_keys中,公開金鑰檔案.pub裡面只有一行資訊,上面的命令相當於把那一行資訊追加到authorized_keys檔案最後一行。
如果.ssh目錄是你主機剛剛建立的,那麼可能還需要改變一下這個目錄的許可權,將許可權放低,chmod -R 0600 ~/.ssh,到此,所有設定就算做完了,你可以退出登入,在自己的主機上試一下了,現在再敲入ssh命令後,不用密碼就可以登入主機了。
from:http://sexywp.com/mac-os-x-ssh-key-pair-login-linux.htm