$ ssh-keygen -t rsa -C "xxx"
參數說明: 算法
固然,若是不想要這些能夠直接輸入(通常也是這麼作的)下面命令:vim
ssh-keygen
以後會在用戶的根目錄下的.ssh的文件夾生成私鑰id_rsa和公鑰id_rsa.pub。本地的.ssh的文件夾存在如下幾個文件:服務器
注意:執行上面命令後,它要求你輸入加密的一些附加參數,不用管,通常默認就好,一直回車便可生成祕鑰。 ssh
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@xxx.xxx.xxx.xxx
user表明Linux用戶,xxx.xxx.xxx.xxx表明遠程主機地址,下面爲例子:ide
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.2.128
注意:此時須要登陸到user@xxx.xxx.xxx.xxx服務器的密碼(沒錯,這裏又用到了前面ssh密碼登陸裏講過的步驟),輸入正確後便可在服務器生成公鑰,該公鑰保存在服務器家目錄的.ssh的authorized_keys中(存放遠程免密登陸的公鑰,主要經過這個文件記錄多臺機器的公鑰),而後退出便可。 加密
ssh root@xxx.xxx.xxx.xxx
服務器獲得客戶端的請求後,就會到authorized_keys中查找,若是有響應的用戶名和IP,就會隨機生成一個字符串;
服務器將使用客戶端拷貝過來的公鑰將隨機生成的字符串進行加密,而後發送給客戶端;
客戶端會使用私鑰解密服務器發送來的消息,而後將解密後的字符串發送給服務器;
服務器接收到客戶端發送來的字符串後,跟以前的字符串進行對比,若是一致,就容許免密碼登陸。rest
既然開啓了SSH免密登錄,就能夠把密碼登錄關閉了。這樣既能夠快速鏈接遠程服務器,也能夠防止***。
修改/etc/ssh/sshd_config文件:code
# vim /etc/ssh/sshd_config
將其中3行命令更改,前面若帶#,就刪掉,做用是能夠用密鑰登錄服務器:字符串
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
而後在修改其中PasswordAuthentication屬性爲no,即禁用密碼登錄:get
PasswordAuthentication no
重啓sshd服務使操做生效:
systemctl restart sshd.service
注:本地密鑰請保存好,遠程服務器authorized_keys中公鑰也別亂修改。
參考資料
https://zhuanlan.zhihu.com/p/73944703