這裏假設主機A(192.168.0.113)用來遠程鏈接主機B(192.168.0.186)linux
在主機A上執行以下命令來生成配對密鑰:ssh-keygen -t rsa -b 3072算法
-t參數指定加密算法爲rsa,-b參數指定密鑰長度,能夠是102四、204八、3072等等,位數越長,被暴力破解所需的時間越久vim
遇到提示回車默認便可,公鑰被存到用戶目錄下.ssh目錄,好比root存放在:/root/.ssh/id_rsa.pubssh
將 .ssh 目錄中的 id_rsa.pub 文件傳輸到主機B
在主機A中執行以下命令和主機B創建信任,例(假設主機B的IP爲:192.168.0.186):ide
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.186
如上命令的實際效果是在主機B的/root/.ssh/的目錄下新建一個authorized_keys文件,其內容就是主機A的id_rsa.pub內容測試
下面就能夠用scp、ssh命令不須要密碼來遠程鏈接主機B了加密
ssh root@192.168.0.186 回車就不須要密碼了。
若是機器B須要添加多個機器的公鑰,則須要在authorized_keys中追加公鑰內容,命令以下:
在其餘機器上把公鑰文件發送給主機B,而後在主機B上執行以下命令rest
cat id_rsa.pub >> /root/.ssh/authorized_keys
id_rsa : 生成的私鑰文件
id_rsa.pub : 生成的公鑰文件
know_hosts : 已知的主機公鑰清單it
若是但願ssh公鑰生效需知足至少下面兩個條件:io
# vim /etc/ssh/sshd_config PasswordAuthentication no //yes改成no ChallengeResponseAuthentication no //yes改成no RSAAuthentication yes //去掉前面的註釋 PubkeyAuthentication yes //去掉前面的註釋 AuthorizedKeysFile .ssh/authorized_keys //去掉前面的註釋
改完後重啓sshd就OK了,在這裏要注意,必定要先測試密鑰是否是能登陸,成功後在禁止密碼登陸,否則很容易把本身牆外面
2. linux ssh密鑰登陸和取消密鑰登陸# 取消密鑰登陸 #PubkeyAuthentication yes 把yes改成no PubkeyAuthentication no # 取消密鑰登陸只須要把no改爲yes PasswordAuthentication yes # 重啓sshd服務 systemctl restart sshd.service3. 使用密鑰方式登錄Linux主機
這裏以主機B爲例,使用SecureCRT 8.5遠程鏈接軟件
先使用密碼的方式登錄主機B
執行以下命令來生成配對密鑰:ssh-keygen -t rsa -b 3072
而後,在主機B上安裝公鑰:
cd /root/.ssh cat id_rsa.pub >> authorized_keys
爲了確保鏈接成功,請保證如下文件權限正確:
chmod 600 authorized_keys chmod 700 ~/.ssh
編輯 /etc/ssh/sshd_config 文件,進行以下設置:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
留意 root 用戶可否經過 SSH 登陸: PermitRootLogin yes
重啓 SSH 服務:service sshd restart
而後把id_rsa.pub公鑰文件下載到本地,打開SecureCRT軟件,在Authentication一欄選中PublicKey,
輸入主機IP,用戶名,選中下載的公鑰文件,而後鏈接登錄。
以密鑰方式登陸成功後,再禁用密碼登陸: PasswordAuthentication no