1. 程式人生 > >Centos7 通過SSH使用密鑰實現免密登錄

Centos7 通過SSH使用密鑰實現免密登錄

ras known pri oca been rom pan 查找 用戶名

Public Key認證的主要魅力在於認證時承諾不必提供密碼就能夠同遠程系統建立連接。
Public Key認證的基礎在於一對密鑰,public key和private key,public key對數據進行加密而且只能用於加密,private key 只能對所匹配的public key加密過的數據進行解密。
我們把public key放在遠程系統合適的位置,然後從本地開始進行ssh連接。
此時,遠程的sshd會產生一個隨機數並用我們產生的public key進行加密後發給本地,本地會用private key進行解密並把這個隨機數發回給遠程系統。
最後,遠程系統的sshd會得出結論我們擁有匹配的private key允許我們登錄。
--------------------- 作者:Jinsx2015 來源:CSDN 原文:https://blog.csdn.net/axing2015/article/details/83754785 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

一、serverA 免密登錄 serverB 原理
首先在 serverA 上生成一對秘鑰(ssh-keygen)
將公鑰拷貝到 serverB,重命名 authorized_keys
serverA 向 serverB 發送一個連接請求,信息包括用戶名、ip
serverB 接到請求,會從 authorized_keys 中查找,是否有相同的用戶名、ip,如果有 serverB 會隨機生成一個字符串
然後使用使用公鑰進行加密,再發送個 serverA
serverA 接到 serverB 發來的信息後,會使用私鑰進行解密,然後將解密後的字符串發送給 serverB
serverB 接到 serverA 發來的信息後,會給先前生成的字符串進行比對,如果一直,則允許免密登錄
二、Centos7 默認安裝了 ssh服務
三、啟動 ssh 服務

# 查看 ssh 狀態
systemctl status sshd
# 啟動 ssh
systemctl start sshd
# 停止 ssh
systemctl stop sshd

四、serverA 生成秘鑰,遇到提示直接敲回車即可

CentOS7 默認使用RSA加密算法生成密鑰對,保存在~/.ssh目錄下的id_rsa(私鑰)和id_rsa.pub(公鑰)。也可以使用“-t DSA”參數指定為DSA算法,對應文件為id_dsa和id_dsa.pub,
密鑰對生成過程會提示輸入私鑰加密密碼,可以直接回車不使用密碼保護。
 1 [root@localhost ~]# ssh-keygen
2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/root/.ssh/id_rsa): 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6 Your identification has been saved in /root/.ssh/id_rsa. 7 Your public key has been saved in /root/.ssh/id_rsa.pub. 8 The key fingerprint is: 9 SHA256:/gGrlDJN5euMS5aai5feBkEI/0WjEnzPzx1xGtdkKG4 [email protected] 10 The keys randomart image is: 11 +---[RSA 2048]----+ 12 |.o.. o +o | 13 | .o.oo . + +.. | 14 | oo.o. .. B | 15 | o..oo E | 16 | ...oSo . | 17 | .o +o+. | 18 | ooB + . | 19 | .oX.= . . | 20 | .o=o=.o . | 21 +----[SHA256]-----+ 22 [root@localhost ~]# ls ~/.ssh/ 23 id_rsa id_rsa.pub known_hosts 24 [root@localhost ~]#

五、解決找不到 .ssh 目錄

如果在上面生成秘鑰後,執行 cd ~/.ssh 找不到 .ssh 目錄,是因為沒有使用 ssh 登錄過,使用 ssh 登錄一下即可生成 .ssh 目錄,之後再重新執行 ssh-keygen 生成秘鑰即可
 1 [root@localhost ~]# ssh localhost
 2 The authenticity of host localhost (::1) cant be established.
 3 ECDSA key fingerprint is SHA256:DYd7538oOsqpIIDTs01C3G4S6PRE7msA91yUgk9Dzxk.
 4 ECDSA key fingerprint is MD5:88:80:21:03:b2:52:6b:06:ff:c7:3b:d5:2d:47:c9:ad.
 5 Are you sure you want to continue connecting (yes/no)? yes
 6 Warning: Permanently added localhost (ECDSA) to the list of known hosts.
 7 root@localhosts password: 
 8 Last login: Fri Oct 26 16:15:57 2018 from localhost
 9 [root@localhost ~]# ls ~/.ssh/
10 known_hosts
11 [root@localhost ~]# exit
12 登出
13 Connection to localhost closed.
14 [root@localhost ~]# 

六、移動 id_rsa.pub 文件

 1 # 將 serverA ~/.ssh目錄中的 id_rsa.pub 這個文件拷貝到你要登錄的 serverB 的~/.ssh目錄中
 2 scp ~/.ssh/id_rsa.pub 192.168.0.101:~/.ssh/
 3 # 然後在 serverB 運行以下命令來將公鑰導入到~/.ssh/authorized_keys這個文件中
 4 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 5 
 6 # 另外要註意請務必要將服務器上
 7 ~/.ssh權限設置為700
 8 ~/.ssh/authorized_keys的權限設置為600
 9 # 這是linux的安全要求,如果權限不對,自動登錄將不會生效

七、驗證免密登錄

ssh 192.168.101

Centos7 通過SSH使用密鑰實現免密登錄