1、實現原理html
使用一種被稱爲"公私鑰"認證的方式來進行ssh登陸。"公私鑰"認證方式簡單的解釋是:linux
首先在客戶端上建立一對公私鑰(公鑰文件:~/.ssh/id_rsa.pub;私鑰文件:~/.ssh/id_rsa),而後把公鑰放到服務器上(~/.ssh/authorized_keys),本身保留好私鑰。當ssh登陸時,ssh程序會發送私鑰去和服務器上的公鑰作匹配。若是匹配成功就能夠登陸了。安全
2、實驗環境服務器
A機:TS-DEV/10.0.0.163ssh
B機:CS-DEV/10.0.0.188post
3、Linux/Unix雙機創建信任測試
3.1 在A機生成證書url
在A機root用戶下執行ssh-keygen命令,在須要輸入的地方,直接回車,生成創建安全信任關係的證書。3d
# ssh-keygen -t rsahtm
注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶家目錄的.ssh子目錄中。
3.2 查看~/.ssh生成密鑰的文件
# cd ~/.ssh
# ll
3.3 A對B創建信任關係
將公鑰證書id_rsa.pub複製到機器B的root家目錄的.ssh子目錄中,同時將文件名更換爲authorized_keys,此時須要輸入B機的root用戶密碼(還未創建信任關係)。創建了客戶端到服務器端的信任關係後,客戶端就能夠不用再輸入密碼,就能夠從服務器端拷貝數據了。
# scp -r id_rsa.pub 10.0.0.188:/root/.ssh/authorized_keys
3.4 B對A創建信任關係
在B機上執行一樣的操做,創建B對A的信任關係。
# ssh-keygen -t rsa
# cd ~/.ssh/
# ll
# scp -r id_rsa.pub 10.0.0.163:/root/.ssh/authorized_keys
4、測試
在A機上:
# scp -r 10201_database_linux_x86_64.cpio 10.0.0.188:/tmp/david/
在B機上:
注:若是想讓B,C同時能夠scp不輸入密碼,傳輸A中的數據;
則要把B、C的公鑰都給 A;
操做步驟:把兩機器的id_rsa.pub中的數據都拷貝到A的/root/.ssh/authorized_keys文件中,一行表示一條;
5、遠程執行命令
命令格式:ssh 遠程用戶名@遠程主機IP地址 '遠程命令或者腳本'
# ssh root@10.0.0.188 'hostname'
上述命令執行後,終端輸出的是對端主機的主機名,而不是當前登陸的主機的主機名。說明 hostname 這個命令實際上是在對端主機上運行的。
雙機信任關係已經創建!