歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux學習筆記--SSH免密碼登錄

需要實現的效果:

有兩台服務器:"192.168.201.236" 和 "192.168.201.237"

需要實現:在服務器"192.168.201.236"上實現ssh無密碼連接服務器"192.168.201.237"

實現步驟:

1) 在"192.168.201.236"服務器上使用"ssh-keygen -t rsa"命令來創建公鑰。
(會問你存放的目錄,如果不需要修改,直接回車兩次即可,默認保存路徑為"~/.ssh/")

這裡寫圖片描述<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:sql;"> 2) 將第一步生成的"~/.ssh/id_rsa.pub"這個文件拷貝到"192.168.201.237"服務器的"~/.ssh/"目錄中並改名為"authorized_keys"。

這裡寫圖片描述

3) 修改"192.168.201.237"服務器的"~/.ssh/"目錄權限為700,"~/.ssh/authorized_keys"文件權限為600。
(這是linux的安全要求,如果權限不對,自動登錄將不會生效。)

這裡寫圖片描述

4) 在"192.168.201.236"服務器上用ssh命令連接"192.168.201.237"服務器。(如下圖,則為連接成功。注:30330為237服務器端口。)

這裡寫圖片描述

可能還會提示輸入密碼的解決方法:

1) 如果出現報警:"Address X.X.X.X maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!"。

在"192.168.201.236"(連接端)服務器上執行如下命令:
echo "GSSAPIAuthentication no" >> ~/.ssh/config

在"192.168.201.237"(被連接端)服務器上執行"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免密碼登錄原理:

這種方式你需要在客戶端服務器上為自己創建一對密匙,並把公匙放在需要登錄的服務器上。
當你要連接到服務器上時,客戶端就會向服務器請求使用密匙進行安全驗證。
服務器收到請求之後,會在該服務器上你所請求登錄的用戶的家目錄下尋找你的公匙,
然後與你發送過來的公匙進行比較。
如果兩個密匙一致,服務器就用該公匙加密“質詢”並把它發送給客戶端。
客戶端收到“質詢”之後用自己的私匙解密再把它發送給服務器。

使用場景:

1) rsync自動備份時免密碼登錄;
2) 集群環境中需要主機間互相通信;
3) 自動部署項目,將編譯好的war包放到正確的服務器上。
Copyright © Linux教程網 All Rights Reserved