A為本地主機(jī)(即用于控制其他主機(jī)的機(jī)器) ;
B為遠(yuǎn)程主機(jī)(即被控制的機(jī)器Server), 假如ip為172.24.253.2 ;
A和B的系統(tǒng)都是Linux

在A上的命令:
# ssh-keygen -t rsa (連續(xù)三次回車,即在本地生成了公鑰和私鑰,不設(shè)置密碼)
# ssh root@172.24.253.2 "mkdir .ssh;chmod 0700 .ssh" (需要輸入密碼)
# scp ~/.ssh/id_rsa.pub root@172.24.253.2:.ssh/
id_rsa.pub (需要輸入密碼)

然后在B上的命令:
# touch
/root/.ssh/authorized_keys2 (如果已經(jīng)存在這個(gè)文件, 跳過這條)
# cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內(nèi)容追加到 authorized_keys2 中)

回到A機(jī)器:
#
ssh root@172.24.253.2 (因?yàn)闆]有設(shè)置私鑰密碼, 所以不需要密碼, 登錄成功)

如果能保護(hù)好自己的私鑰, 這種方法相對在shell上輸入密碼, 要安全一些

##############################################################################################

A為本地主機(jī)(即用于控制其他主機(jī)的機(jī)器) ;
B為遠(yuǎn)程主機(jī)(即被控制的機(jī)器Server), 假如ip為172.24.253.2 ;
A和B的系統(tǒng)都是Linux

在A上的命令:
# ssh-keygen -t rsa (連續(xù)三次回車,即在本地生成了公鑰和私鑰,沒有密碼)
# ssh root@172.24.253.2 "mkdir .ssh;chmod 0700 .ssh" (需要輸入密碼)
# scp ~/.ssh/id_rsa.pub root@172.24.253.2:.ssh/
id_rsa.pub (需要輸入密碼)

在B上的命令:
# touch
/root/.ssh/authorized_keys2 (如果已經(jīng)存在這個(gè)文件, 跳過這條)
# cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內(nèi)容追加到 authorized_keys2 中)

回到A機(jī)器:
#
ssh root@172.24.253.2 (不需要密碼, 登錄成功)

如果能保護(hù)好自己的私鑰, 這種方法相對在shell上輸入密碼, 要安全一些

#########################################################################

深入一點(diǎn)點(diǎn):

從表面上簡單的理解一下登錄的過程,
首先 ssh-keygen -t rsa 命令生成了一個(gè)密鑰和一個(gè)公鑰, 而且密鑰可以設(shè)置自己的密碼
可以把密鑰理解成一把鑰匙, 公鑰理解成這把鑰匙對應(yīng)的鎖頭,
把鎖頭(公鑰)放到想要控制的server上, 鎖住server, 只有擁有鑰匙(密鑰)的人, 才能打開鎖頭, 進(jìn)入server并控制
而對于擁有這把鑰匙的人, 必需得知道鑰匙本身的密碼,才能使用這把鑰匙 (除非這把鑰匙沒設(shè)置密碼), 這樣就可以防止鑰匙被了配了(私鑰被人復(fù)制)

當(dāng)然, 這種例子只是方便理解罷了,
擁有root密碼的人當(dāng)然是不會(huì)被鎖住的, 而且不一定只有一把鎖(公鑰), 但如果任何一把鎖, 被人用其對應(yīng)的鑰匙(私鑰)打開了, server就可以被那個(gè)人控制了
所以說, 只要你曾經(jīng)知道server的root密碼, 并將有root身份的公鑰放到上面, 就可以用這個(gè)公鑰對應(yīng)的私鑰"打開" server, 再以root的身分登錄, 即使現(xiàn)在root密碼已經(jīng)更改!

如果想控制n個(gè)機(jī)器, 那就需要n對鑰匙(密鑰和公鑰), ssh-keygen 命令可以隨意更改鑰匙對的名字, 比如:
[root@wwy .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.102.12
......

這樣私鑰和公鑰的名字分別就是:
id_rsa_192.168.102.12 和 id_rsa_192.168.102.12.pub
然后將 id_rsa_192.168.102.12.pub 文件的內(nèi)容, 追加到sever的 ~/.ssh/authorized_keys2 文件中,

最后, 在本地
用ssh命令的 -i 參數(shù)指定本地密鑰, 并登錄:
# ssh -i /root/.ssh/id_rsa_192.168.102.12 192.168.102.12

如果密鑰設(shè)置了密碼, 就用密鑰的密碼登錄, 沒設(shè)密碼, 就直接登錄進(jìn)去了
scp也是一樣的





完畢

 

有些時(shí)候,我們在復(fù)制/移動(dòng)文件到另一臺機(jī)器時(shí)會(huì)用到scp,因?yàn)樗容^安全。但如果每次

都要輸入密碼,就比較煩了,尤其是在script里。不過,ssh有另一種用密鑰對來驗(yàn)證的方

式。下面寫出我生成密匙對的過程,供大家參考。

第一步:生成密匙對,我用的是rsa的密鑰。使用命令 "ssh-keygen -t rsa"

   [user1@rh user1]$ ssh-keygen -t rsa
   Generating public/private rsa key pair.
   Enter file in which to save the key (/home/user1/.ssh/id_rsa):
   Created directory '/home/user1/.ssh'.
   Enter passphrase (empty for no passphrase):
   Enter same passphrase again:
   Your identification has been saved in /home/user1/.ssh/id_rsa.
   Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
   The key fingerprint is:
   e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com
   [user1@rh user1]$
生成的過程中提示輸入密鑰對保存位置,直接回車,接受默認(rèn)值就行了。接著會(huì)提示輸入一

個(gè)不同于你的password的密碼,直接回車,讓它空著。當(dāng)然,也可以輸入一個(gè)。(我比較懶

,不想每次都要輸入密碼。) 這樣,密鑰對就生成完了。

其中公共密鑰保存在 ~/.ssh/id_rsa.pub
私有密鑰保存在 ~/.ssh/id_rsa

然后改一下 .ssh 目錄的權(quán)限,使用命令 "chmod 755 ~/.ssh"

   [user1@rh user1]$ chmod 755 ~/.ssh
   [user1@rh user1]$
之后把這個(gè)密鑰對中的公共密鑰復(fù)制到你要訪問的機(jī)器上去,并保存為

~/.ssh/authorized_keys.

   [user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys
   user1@rh1's password:
   id_rsa.pub                                    100%  228     3.2MB/s   00:00
   [user1@rh user1]$
之這樣就大功告成了。之后你再用ssh scp sftp 之類的訪問那臺機(jī)器時(shí),就不用輸入密碼

了,用在script上更是方便。