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


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 root@localhost.localdomain
10 The key's 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)' can't 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@localhost's 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM