SSH免密碼登入

2022-08-30 11:51:11 字數 1922 閱讀 2383

0, 原理

這種方式你需要在客戶端伺服器上為自己建立一對密匙,並把公匙放在需要登入的伺服器上。

當你要連線到伺服器上時,客戶端就會向伺服器請求使用密匙進行安全驗證。

伺服器收到請求之後,會在該伺服器上你所請求登入的使用者的家目錄下尋找你的公匙,

然後與你傳送過來的公匙進行比較。

如果兩個密匙一致,伺服器就用該公匙加密「質詢」並把它傳送給客戶端。

客戶端收到「質詢」之後用自己的私匙解密再把它傳送給伺服器。

1, 操作

配置 主機a:192.168.0.101

主機b:192.168.0.102

需要實現:在主機a上實現ssh無密碼連線主機b;

步驟:0, 登入主機a:192.168.0.101

1, ssh-keygren -t rsa

2, cd /root/.ssh/

3, scp ./id_rsa.pub [email protected]:/root/.ssh/id_rsa.pub.101

4, ssh root@[email protected]

5, chmod 700 ./.ssh/ # option

6, cd ./.ssh/

7, cat id_rsa.pub.101 >> authorized_keys

8, chmod 600 authorized_keys # option

2, 使用場景

1) rsync自動備份時免密碼登入;

2) 集群環境中需要主機間互相通訊;

3) 自動部署專案,將編譯好的war包放到正確的伺服器上。

3, faq

1) 如果出現報警:"address x.x.x.x maps to localhost, but this does not map back to the address - possible break-in attempt!"。

在"192.168.0.101"(連線端)伺服器上執行如下命令:

echo "gssapiauthentication no" >> ~/.ssh/config

在"192.168.0.102"(被連線端)伺服器上執行"vi /etc/ssh/sshd_config"命令,修改下面兩項值為"no" :

"gssapiauthentication no"

"usedns no"

2) 如果出現報警:"agent admitted failure to sign using the key."

執行命令:"ssh-add"(把專用金鑰新增到ssh-agent的快取記憶體中)

如果還不行,執行命令:"ps -af | grep agent "

(檢查ssh**是否開啟,如果有開啟的話,kill掉該**)

然後執行"ssh-agent"(重新開啟乙個ssh**)

如果還是不行,繼續執行命令:"sudo service sshd restart"(重啟一下ssh服務)

3) 通過命令"/usr/sbin/sestatus -v" 檢視selinux狀態,如果"selinux status"引數為"enabled"(開啟狀態),則關閉selinux。

臨時關閉方法(不用重啟機器):"setenforce 0"

修改配置檔案關閉方法(需要重啟機器):執行命令"/etc/selinux/config",將"selinux=enforcing"改為"selinux=disabled"

4) 執行命令"vim /etc/ssh/sshd_config"去掉下面三行的注釋:

"rsaauthentication yes"

"pubkeyauthentication yes"

"authorizedkeysfile .ssh/authorized_keys"

ssh 免密碼登入

ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh keygen t rs...

ssh 免密碼登入

ssh 免密碼登入 ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh k...

ssh免密碼登入

實現原理 主機a 產生公鑰和金鑰,將主機a的公鑰傳送到主機b 主機b 接收主機a傳送的公鑰 主機a ssh請求登入到主機b 主機b 傳送給主機a一串字元 主機a 收到主機b傳送的字元,使用金鑰進行加密,並傳送回到主機b 主機b 接收到主機a使用金鑰加密後的字元,使用主機a的公鑰執行一定演算法進行對比...