一、在A端創建密鑰對:
[root@A ~] ssh-keygen -t rsa -b 4096 -P ''
二、如果B機器沒有.ssh和authorized_keys文件則創建這個文件夾和文件先,創建后要chown改成當前用戶的所屬者,其次也要改:
chown buser:buser -R ~/.ssh chmod 700 ~/.ssh chmod 600 .ssh/authorized_keys
三、將公鑰xxxxxx.pub文件拷貝到服務器端的~/.ssh/authorized_keys文件中,有三種方法有三種方法: 1、通過scp拷貝:
[root@A ~] scp -P 22 ~/.ssh/xxxxxx.pub buser@bserver:~/authorized_keys #可選參數-P代表指定用端口號22
2、通過ssh-copyid程序:
[root@A ~] ssh-copy-id -i xxxxxx.pub buser@bserver #此種方式簡單,不需追加改文件名,但不能指定端口號,默認以22端口
3、通過cat方法:
[root@A ~] cat ~/.ssh/xxxxxx.pub | ssh -p 22 buser@bserver‘cat >> ~/.ssh/authorized_keys’
四、免密碼登錄過程: 1、在A上生成公鑰/私鑰 2、將公鑰拷貝給server B,要重命名成authorized_keys 3、Server A向Server B發送一個連接請求 4、Server B得到Server A的信息后,在authorized_key中查找,如果有相應的用戶名和IP,則隨機生成一個字符串,並用Server A的公鑰加密,發送給Server A 5、Server A得到Server B發來的消息后,使用私鑰進行解密,然后將解密后的字符串發送給Server B。Server B進行和生成的對比,如果一致,則允許免登 總之:A要免密碼登錄到B,B首先要擁有A的公鑰,然后B要做一次加密驗證。對於非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開。 五、常見問題: 1、配置了免密,為什么還提示輸入密碼? 查看remote端日志
tail -f /var/log/secure
發現:Authentication refused: bad ownership or modes for file /home/dragon/.ssh/authorized_keys 很明顯是由於/home/dragon/.ssh/authorized_keys文件的權限設置不正確,將權限設置為600即可:
chmod 600 .ssh/authorized_keys
2、配置了免密,提示輸入密碼,沒有日志沒有報錯,可以通過以下方式調試:
ssh -vvv buser@bserver
如果權限不對或者路勁不對都會導致找不到對應的私鑰或公鑰,可能 ~/.ssh目錄為非700權限,並檢查私鑰的路勁和文件名是否正確: vim /etc/ssh/ssh_config