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

在A上的命令:
# ssh-keygen -t rsa (連續三次回車,即在本地生成了公鑰和私鑰,不設置密碼)
# 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 (如果已經存在這個文件, 跳過這條)
# cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內容追加到 authorized_keys2 中)

回到A機器:
#
ssh root@172.24.253.2 (因為沒有設置私鑰密碼, 所以不需要密碼, 登錄成功)

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

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

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

在A上的命令:
# ssh-keygen -t rsa (連續三次回車,即在本地生成了公鑰和私鑰,沒有密碼)
# 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 (如果已經存在這個文件, 跳過這條)
# cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內容追加到 authorized_keys2 中)

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

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

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

深入一點點:

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

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

如果想控制n個機器, 那就需要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 文件的內容, 追加到sever的 ~/.ssh/authorized_keys2 文件中,

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

如果密鑰設置了密碼, 就用密鑰的密碼登錄, 沒設密碼, 就直接登錄進去了
scp也是一樣的





完畢

 

有些時候,我們在復制/移動文件到另一臺機器時會用到scp,因為它比較安全。但如果每次

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

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

第一步:生成密匙對,我用的是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]$
生成的過程中提示輸入密鑰對保存位置,直接回車,接受默認值就行了。接著會提示輸入一

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

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

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

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

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

~/.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 之類的訪問那臺機器時,就不用輸入密碼

了,用在script上更是方便。