SSH是一種安全通道協議,主要用來遠程登入。在RHEL 5系統中使用的是OpenSSH伺服器由openssh, openssh-server等軟體包提供的(預設已經安裝),並以將sshd添加為標準的系統服務。使用方法如下:
$ ssh host
$ ssh username@host
$ ssh -p 222 username@host
-p:指定訪問連接埠;如果省略該參數,則預設訪問SSH服務的預設連接埠22;
如果是第一次登入對方主機,則系統會出現一下提示:
The authenticity of host 'host(192.168.0.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
這段話是說,無法確認host主機的真實性,只知道它的公開金鑰指紋,問你還想繼續串連嗎?
輸入yes之後,系統會出現一句提示,表示host主機已經得到認可。
Warning: Permanently added 'host,192.168.0.21' (RSA) to the list of known hosts.
然後要求輸入秘密:
$ Password: (enter password)
此時,如果秘密正確,就可以登入了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在信任環境下,如果每次遠程登入時,都要輸入密碼,感覺太浪費時間了,尤其是密碼很複雜、 維護的伺服器比較多的情況下。
於是有了正常需求:不用輸入密碼即可實現遠程登入。
實現步驟如下:
1、本地產生一對秘鑰檔案(公開金鑰和私密金鑰);
$ ssh-keygen
#以上命令等價於 ssh-keygen -t rsa
#-t:指定密鑰的類型,預設為SSH-2 的rsa類型;
運行上面的命令後,系統會出現一系列提示,可以一路斷行符號。特別說明,其中有一個問 題是,要不要對私密金鑰設定口令(passphrase),如果擔心私密金鑰的安全,可以設定一個。運 行結束以後,會在 ~/.ssh/ 目錄下新產生兩個檔案:id_rsa.pub和 id_rsa。前者公開金鑰,後者是私密金鑰。
2、將公開金鑰傳送到遠程主機host上面;
$ ssh-copy-id user@host
經過以上兩步之後,就可以實現無密碼遠程登入了(遠程主機將使用者的公開金鑰儲存在~/.ssh/authorized_keys 檔案中)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
常見問題:
1、產生密鑰並上傳至遠程主機後,仍然無法實現無密碼登入?
開啟遠程主機的 /etc/ssh/sshd_config 這個檔案,以下幾行取消注釋。
#RSAAuthentication=yes
#PubkeyAuthentication=yes
#AuthorizedKeysFile=.ssh/authorized_keys
然後,重啟遠程主機的ssh服務。
#ubuntu系統
$ service ssh restart
#debian系統
$ /etc/init.d/ssh restart
2、執行ssh-copy-id 命令時,遠程伺服器的SSH服務連接埠不是22,如下:
$ ssh-copy-id nameB@machineB
ssh: connect to host machineB port 22: Connection refused
則使用如下命令:
$ ssh-copy-id "-p 22000 nameB@machineB"