Public Key認證是什麼這是一種認證方法,類似於常見的使用者名稱密碼認證方法。不同的是需要在用戶端機器上保留一個很長很長的加密key,而在伺服器端需要做出相應的配置。當用戶端想要訪問伺服器時,伺服器則會檢查自身配置並根據用戶端所提供的使用者名稱來識別用戶端。說白了就是實現了無密碼訪問,並同時兼有安全保障措施。認證過程簡要說明Public key對資料進行加密而且只能用於加密,Private key只能對所匹配的Public key加密過的資料進行解密。我們把Public key放在遠程系統合適的位置,然後從本地開始進行ssh串連。此時,遠端sshd會產生一個隨機數並用我們產生的Public key進行加密後發給本地,本地會用Private key進行解密並把這個隨機數發回給遠程系統。最後,遠程系統的sshd會得出結論我們擁有匹配的Private key允許我們登入。用戶端配置一、使用用戶端的使用者登入,然後運行命令“ssh-keygen -t dsa”產生Public Key和Private Key,例子如下:
[root@someserver ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /root/.ssh/id_dsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
blah:blah:blah:blah:blah:blah:blah:blah:blah:blah root@someserver
二、設定許可權
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub伺服器端配置一、從目錄/etc/或/etc/ssh/或/etc/conf.d/中找到sshd_config檔案,並用vi編輯器開啟
二、啟用RSAAuthentication和PubkeyAuthentication,並同時指定authorized_keys檔案位置,設定如下:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
三、更新並儲存sshd_config檔案後,運行命令“service sshd restart”重新啟動服務,不同版本Linux的服務啟動方式見:http://theos.in/desktop-linux/tip-that-matters/how-do-i-restart-linux-network-service/
四、以上三步只是啟用無密碼驗證功能,想要這個功能生效,還必須把用戶端產生的Public Key配置到伺服器的authorized_keys檔案中去。把之前在用戶端產生的id_rsa.pub檔案內容拷貝到authorized_keys中,如果有多個用戶端,那麼需要把每個用戶端產生的Public Key都拷貝進來,注意換行,一個用戶端一行。測試一、登入用戶端,運行命令“ssh username@servername”,運行命令“ssh -vvv -o PreferredAuthentications=publickey username@servername”可以強制使用Public Key驗證方法。
二、測試SFTP可以使用命令“sftp username@servername”注意事項.ssh目錄的屬主、屬組使用目前使用者與使用者組
.ssh目錄的許可權請保持700
authorized_keys的許可權為644
id_rsa的許可權為600
id_rsa.pub的許可權為644
檢查使用者$HOME目錄許可權必須為755參考文檔http://tutorialgenius.blogspot.hk/2012/02/unixlinux-setting-up-public-key.html
http://blog.csdn.net/goalking019/article/details/4925696
http://www.comodo.com/resources/small-business/digital-certificates2.php