在Linux下設定最簡單的ssh安全自動登入
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也是一樣的