前面我在個人 代碼筆記本過 如何用MAC 的 「終端」 軟件連接 linux 服務器。可是吧,對我來講,這樣的操做太麻煩了,不習慣。html
本文要講的,就是如何簡化從Mac登陸Linux主機的操做步驟,提升效率。所謂的「免登錄」實際上是不存在的,只是說,從驗證密碼的登陸方式,改成公私鑰對的登陸驗證方式。使用後者的方式,每次會由ssh客戶端自動發送驗證信息,因此就免去了人工輸入密碼,看起來好像「免登錄」同樣。linux
關於這麼作的原理,你們能夠本身去Google,關鍵詞是「非對稱加密」,「RSA算法」,「基於ssh密鑰對的自動登陸」,等等,我就很少解釋了。我直接說操做步驟吧:算法
1.生成密鑰對
2.用密碼登陸遠程主機,將公鑰拷貝過去
3.done服務器
第一步:生成密匙對
執行命令 ssh-keygen -t rsa
執行結果以下:dom
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:1這一段kdy隱藏....... charles@TCMBP.local The key’s randomart image is: +–[ RSA 2048]—-+ | … .. o=.. | | +.*o. …+ | | Bo+o. o.. | | …+E o | | + S | | . . | | . | | | | | +—————–+
注意:提示enter passphrase的時候,不要輸入,由於你原本就想少打一次密碼的,這裏若是設置了用密碼保護私鑰,那登陸的時候仍是要輸密碼,就白作了。ssh
作完這個步驟後,cd ~/.ssh,你就能夠看到你剛纔生成的密鑰對,id_rsa是私鑰,id_rsa.pub是公鑰。下一步,就是把公鑰拷貝到目標主機上。ide
第二步:將公鑰拷貝到目標主機加密
用ssh登陸到目標主機,而後cd ~/.ssh目錄,若是目錄不存在,那麼要本身建立mkdir -p ~/.ssh。你從此要用哪一個賬戶登陸主機,就在哪一個賬戶的home目錄下操做,若是要免登錄root,就要去/root下操做。使用~比較好,不用多想了。code
有了.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文件最後一行。htm
若是.ssh目錄是你主機剛剛建立的,那麼可能還須要改變一下這個目錄的權限,將權限放低,chmod -R 0600 ~/.ssh,到此,全部設置就算作完了,你能夠退出登陸,在本身的主機上試一下了,如今再敲入ssh命令後,不用密碼就能夠登陸主機了。