實現原理 java
使用一種被稱爲"公私鑰"認證的方式來進行ssh登陸。"公私鑰"認證方式簡單的解釋是: 安全
首先在客戶端上建立一對公私鑰(公鑰文件:~/.ssh/id_rsa.pub;私鑰文件:~/.ssh/id_rsa),而後把公鑰放到服務器上(~/.ssh/authorized_keys),本身保留好私鑰。當ssh登陸時,ssh程序會發送私鑰去和服務器上的公鑰作匹配。若是匹配成功就能夠登陸了。 服務器
實現環境 ssh
A機器:100.69.197.102 ide
B機器:100.69.174.166 oop
實現過程 spa
一、登錄A機器,生成私鑰/公鑰文件 code
[zhangqi.dzq@v069197102 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/zhangqi.dzq/.ssh/id_rsa): Created directory '/home/zhangqi.dzq/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/zhangqi.dzq/.ssh/id_rsa. Your public key has been saved in /home/zhangqi.dzq/.ssh/id_rsa.pub. The key fingerprint is: 01:df:9f:4a:f0:37:d3:c2:3a:ba:96:68:e4:d3:9c:60 zhangqi.dzq@v069197102.sqa.zmf [zhangqi.dzq@v069197102 ~]$ ls .ssh/ id_rsa id_rsa.pub [zhangqi.dzq@v069197102 ~]$
(要求輸入內容的地方直接按回車鍵),能夠看到生成了.ssh目錄,並生成了.ssh/id_rsa、.ssh/id_rsa.pub兩個文件 hadoop
二、將公鑰證書id_rsa.pub複製到機器B的root家目錄的.ssh子目錄中,同時將文件名更換爲authorized_keys,此時須要輸入B機的root用戶密碼(還未創建信任關係)。創建了客戶端到服務器端的信任關係後,客戶端就能夠不用再輸入密碼,就能夠從服務器端拷貝數據了。 io
[zhangqi.dzq@v069197102 ~/.ssh]$ scp id_rsa.pub zhangqi.dzq@100.69.174.166:/home/zhangqi.dzq/.ssh/authorized_keys zhangqi.dzq@100.69.174.166's password: id_rsa.pub 100% 412 0.4KB/s 00:00 [zhangqi.dzq@v069197102 ~/.ssh]$
注意:若是配置後ssh登錄還須要密碼,那麼是由於ssh因爲權限而致使的安全問題不生效。.ssh文件夾、authorized_keys文件的權限以下
drwx------ 2 hadoop hadoop 4096 Jan 13 11:51 .ssh -rw-r--r-- 1 hadoop hadoop 395 Jan 13 11:39 authorized_keys