linux遠端免密登入伺服器

juststartnow發表於2020-12-08

目的:在本地直接使用 ssh xxxx@xx.xx.xx.xx 命令,不用輸入密碼,就能直接登入目標伺服器

假如A是遠端伺服器

1. 現在A伺服器上生成金鑰

執行命令:

$ ssh-keygen -t rsa

一路回車

會在使用者目錄下生成.ssh資料夾

可以檢視該資料夾

$ ll ~/.ssh
-rw------- 1 leitao leitao 1.7K 6月  15 09:34 id_rsa
-rw-r--r-- 1 leitao leitao  398 6月  15 09:34 id_rsa.pub
-rw-r--r-- 1 leitao leitao  21K 6月  15 09:21 known_hosts

2.在本地生成金鑰

生成方法同上

3.將生成的本地金鑰拷貝到伺服器

$ ssh-copy-id -i ~/.ssh/id_rsa.pub xxxx@xx.xx.xx.xx

需要輸入一次登入密碼

拷貝成功後檢視A伺服器的~/.ssh/目錄下是否自動生成了 authorized_keys 檔案

並檢查該檔案中是否包含了你本地的~/.ssh/id_rsa.pub中的內容

4.本地直接使用ssh命令登入

ssh xxxx@xx.xx.xx.xx

即可登入成功

5.可能遇到的問題

生成金鑰和複製了公鑰到A伺服器,但是登入的時候還是會讓你輸入密碼

解決方法:
1.在伺服器上設定.ssh目錄的許可權必須是700

$ chmod  700 ~/.ssh/
$ chmod  600 ~/.ssh/authorized_keys

2.在伺服器上設定.ssh/authorized_keys檔案許可權必須是600

設定之後重新在本地重新使用ssh登入出現一下錯誤

sign_and_send_pubkey: signing failed: agent refused operation

解決辦法:

在本地執行如下命令:

$ ssh-agent -s
$ ssh-add

相關文章