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也是一樣的
完畢