A為本地主機(即用於控制其他主機的機器) ;
B為遠程主機(即被控制的機器Server), 假如ip為172.24.253.2 ;
在A上的命令:
復制代碼代碼如下:
ssh-keygen -t rsa
(連續三次回車,即在本地生成了公鑰和私鑰,不設置密碼,生成的公鑰私鑰在~/.ssh目錄下,id_rsa是私鑰, id_rsa.pub是公鑰 )
復制代碼代碼如下:
ssh <a href="mailto:[email protected]">[email protected]</a>
mkdir .ssh
chmod 700 .ssh
(需要輸入密碼, 注:必須將.ssh的權限設為700)
復制代碼代碼如下:
scp ~/.ssh/id_rsa.pub <a href="mailto:[email protected]:~/.ssh">[email protected]:~/.ssh</a>
然後在服務器上建立authorized_keys文件:
復制代碼代碼如下:
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
(注意: 必須將~/.ssh/authorized_keys的權限改為600, 該文件用於保存ssh客戶端生成的公鑰,可以修改服務器的ssh服務端配置文件/etc/ssh/sshd_config來換文件名,默認是叫authorized_keys)
復制代碼代碼如下:
cat id_rsa.pub >> authorized_keys
# (將id_rsa.pub的內容追加到 authorized_keys 中, 注意不要用 > ,否則會清空原有的內容,使其他人無法使用原有的密鑰登錄)
回到A機器:
復制代碼代碼如下:
# ssh <a href="mailto:[email protected]">[email protected]</a> (不需要密碼, 登錄成功)
從表面上簡單的理解一下登錄的過程,
首先 ssh-keygen -t rsa 命令生成了一個密鑰和一個公鑰, 而且密鑰可以設置自己的密碼
可以把密鑰理解成一把鑰匙, 公鑰理解成這把鑰匙對應的鎖頭,
把鎖頭(公鑰)放到想要控制的server上, 鎖住server, 只有擁有鑰匙(密鑰)的人, 才能打開鎖頭, 進入server並控制
而對於擁有這把鑰匙的人, 必需得知道鑰匙本身的密碼,才能使用這把鑰匙 (除非這把鑰匙沒設置密碼), 這樣就可以防止鑰匙被了配了(私鑰被人復制)
更簡潔的方式:
步驟1、如果服務器上沒有authorized_keys文件,則:(如果有則跳過這一步)
復制代碼代碼如下:
ssh <a href="mailto:[email protected]">[email protected]</a>
mkdir .ssh
chmod 700 .ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
步驟2、在本機:
復制代碼代碼如下:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub <a href="mailto:[email protected]">[email protected]</a>
ssh-keygen -t rsa #之後三下回車,表示無密碼。即可。
注: ssh-copy-id 自動把密鑰追加到遠程主機的 .ssh/authorized_key 上