轉載
原文地址:
http://blog.csdn.net/hunanchenxingyu/article/details/40544513
http://flysnowxf.iteye.com/blog/1567570
一般情況下,我們用ssh遠程登錄到服務器時,要輸入用戶名和密碼。這對經常維護系統的人來說,很麻煩。怎樣才能不用密碼直接登錄到遠程的linux/unix服務器呢?ssh公鑰認證可以解決這個問題。
公鑰認證,是使用一對加密字符串,一個稱為公鑰(public key), 任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。 通過公鑰加密過的密文使用密鑰可以輕松解密,但根據公鑰來猜測密鑰卻十分困難。
在使用公鑰認證之前,先檢查一下服務器的ssh配置文件/etc/ssh/sshd_config
RSAAuthentication yes #啟用 RSA 認證,默認為yes PubkeyAuthentication yes #啟用公鑰認證,默認為yes AuthorizedKeysFile .ssh/authorized_keys
然后再在客戶機上生成公鑰和私鑰:
cd ~/.ssh #切換到ssh目錄 ssh-keygen -t rsa #以rsa的加密方式生成秘鑰對
此時出現:
Enter file in which to save the key (/home/client/.ssh/id_rsa):
直接按enter即可,或者自己命名一個文件來存儲生成的秘鑰對。(注意使用公鑰連接服務器,默認指定的秘鑰文件名為id_rsa和id_rsa.pub,如果指定其他名可能需要修改ssh配置文件)
將生成的公鑰id_rsa.pub里的內容復制到服務端authorized_keys(新加一行)
重啟ssh服務,到此即可通過公鑰來訪問服務器了
ssh可同時支持publickey和password兩種授權方式,publickey默認不開啟,需要配置為yes。
如果客戶端不存在.ssh/id_rsa,則使用password授權;存在則使用publickey授權;如果publickey授權失敗,依然會繼續使用password授權。