廢話不多說,直接進正題
首先,root修改/etc/ssh/sshd_config文件(客戶端、服務器都需要更改)
將“#AuthorizedKeysFile .ssh/authorized_keys”前面的#號去掉
即,啓用“AuthorizedKeysFile .ssh/authorized_keys”
(如果需要root也能ssh登錄,把“#PermitRootLogin yes”前面的#號也去掉)
同樣root賬戶下,/etc/rc.d/init.d/sshd restart重啓sshd服務使之生效
(客戶端中)切換到需要ssh登錄的帳戶下:
ssh-keygen -t rsa 產生公私鑰對
回車 採用默認文件保存鑰匙
xxxxx 回車 鍵入密碼短語,直接回車爲不建立密碼短語。密碼短語至少5個字符
xxxxx 回車 重複密碼短語,直接回車爲不建立密碼短語
公私鑰產生在此賬戶的.ssh目錄中,id_rsa爲私鑰,id_rsa.pub爲公鑰
(服務器中)切換到需要ssh登錄的帳戶下:
如果服務器中尚未建立公私鑰對,那麼首先按照客戶端的方法建立公私鑰對
scp 賬戶名@客戶端主機名或ip地址:/home/帳戶名/.ssh/id_rsa.pub /home/帳戶名/
將客戶端賬戶的公鑰拷到服務器中。客戶端用主機名或ip地址均可,但是需與ssh登錄命令相符,建議將主機名與ip地址寫入/etc/hosts中,此處用主機名即可(下同)。
yes 將客戶端寫入known_hosts中
輸入客戶端中的賬戶密碼完成複製
cat /home/帳戶名/id_rsa.pub >>/home/帳戶名/.ssh/authorized_keys 將id_rsa.pub中的內桶添加到authorized_keys文件中,authorized_keys文件名需與sshd_config中的設置相符。
chmod 644 /home/帳戶名/.ssh/authorized_keys 修改authorized_keys文件的權限,至少爲644,也可更爲嚴厲(600),不修改的話ssh無密碼登錄不起作用。
(客戶端中)切換到需要ssh登錄的帳戶下:
ssh 服務器主機名 登錄服務器,若在服務器與客戶端中的帳戶名不同,則
ssh 帳戶名@服務器主機名
yes 將服務器寫入known_hosts中
若產生公私鑰時設置了密碼短語,還需要輸入密碼短語,爲了方便,可在客戶端中
ssh-add,然後輸入密碼短語,下次再ssh登錄,無需再輸入密碼短語
關於公私鑰對的一點理解:
公
私鑰對就像是一套鑰匙和鎖,公鑰是鎖,私鑰是鑰匙。私鑰留在客戶端中,公鑰發給服務器。服務器可以有很多把鎖,客戶端只有一把鑰匙。當客戶端ssh登錄服
務器時,服務器會找到這個客戶端發的鎖,然後跟客戶端要鑰匙,如果鑰匙是配套的,那麼登錄成功,反之登錄失敗。當然,以上是針對同一個用戶說的,不同用戶
的公私鑰對也不同,而且每次ssh-keygen產生的公私鑰對也不同。