Centos7 經過SSH使用密鑰實現免密登陸

概述:linux

Public Key認證的主要魅力在於認證時承諾沒必要提供密碼就可以同遠程系統創建鏈接。算法

Public Key認證的基礎在於一對密鑰,public key和private key,public key對數據進行加密並且只能用於加密,private key 只能對所匹配的public key加密過的數據進行解密。vim

咱們把public key放在遠程系統合適的位置,而後從本地開始進行ssh鏈接。centos

此時,遠程的sshd會產生一個隨機數並用咱們產生的public key進行加密後發給本地,本地會用private key進行解密並把這個隨機數發回給遠程系統。安全

最後,遠程系統的sshd會得出結論咱們擁有匹配的private key容許咱們登陸。服務器

1、serverA 免密登陸 serverB 原理dom

1.首先在 serverA 上生成一對祕鑰(ssh-keygen)ssh

2.將公鑰拷貝到 serverB,重命名 authorized_keyside

3.serverA 向 serverB 發送一個鏈接請求,信息包括用戶名、ip加密

4.serverB 接到請求,會從 authorized_keys 中查找,是否有相同的用戶名、ip,若是有 serverB 會隨機生成一個字符串

5.而後使用使用公鑰進行加密,再發送個 serverA

6.serverA 接到 serverB 發來的信息後,會使用私鑰進行解密,而後將解密後的字符串發送給 serverB

7.serverB 接到 serverA 發來的信息後,會給先前生成的字符串進行比對,若是一直,則容許免密登陸

2、Centos7 默認安裝了 ssh服務

3、啓動 ssh 服務

# 查看 ssh 狀態

systemctl status sshd

# 啓動 ssh

systemctl start sshd

# 中止 ssh

systemctl stop sshd

4、serverA 生成祕鑰,遇到提示直接敲回車便可

CentOS7 默認使用RSA加密算法生成密鑰對,保存在~/.ssh目錄下的id_rsa(私鑰)和id_rsa.pub(公鑰)。也可使用「-t DSA」參數指定爲DSA算法,對應文件爲id_dsa和id_dsa.pub,密鑰對生成過程會提示輸入私鑰加密密碼,能夠直接回車不使用密碼保護。

[root@centos7 ~]# cd ~/.ssh/

[root@centos7 .ssh]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:oRDpMNnAxtcmSMZKwDu1mFQ5XeONGbgHsie31r+OI84 root@centos7

The key's randomart image is:

+---[RSA 2048]----+

|+==*+oo+         |

| =X===+ *        |

|oo==*oo+..       |

|.= +.= o .       |

|  . + = S        |

|     o .         |

|    .   .        |

|    .. ...       |

|    .E..oo.      |

+----[SHA256]-----+

[root@centos7 .ssh]# ls

id_rsa  id_rsa.pub  known_hosts

[root@centos7 .ssh]#

5、解決找不到 .ssh 目錄

若是在上面生成祕鑰後,執行 cd ~/.ssh 找不到 .ssh 目錄,是由於沒有使用 ssh 登陸過,使用 ssh 登陸一下便可生成 .ssh 目錄,以後再從新執行 ssh-keygen 生成祕鑰便可

[root@centos7 ~]# ls ~/.ssh/

known_hosts

6、移動 id_rsa.pub 公鑰文件

# 將 serverA ~/.ssh目錄中的 id_rsa.pub 這個文件拷貝到你要登陸的 serverB 的~/.ssh目錄中

scp ~/.ssh/id_rsa.pub 192.168.0.101:~/.ssh/

# 而後在 serverB 運行如下命令來將公鑰導入到~/.ssh/authorized_keys這個文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


# 另外要注意請務必要將服務器上

~/.ssh權限設置爲700

~/.ssh/authorized_keys的權限設置爲600

# 這是linux的安全要求,若是權限不對,自動登陸將不會生效

7、設置ssh,打開祕鑰登陸功能

[root@centos7 .ssh] vim /etc/ssh/sshd_config

去掉註釋#

RSAAuthentication yes

PubkeyAuthentication yes

重啓ssh服務

ystemctl restart sshd

8、驗證免密登陸

ssh 192.168.101


使用軟件登陸linux

1、用軟件生成公鑰拷貝到服務器

360截圖20210421154408275.jpg

[root@centos7 ~]# ls ~/.ssh/

authorized_keys  id_rsa  id_rsa_2048 (2)  id_rsa.pub  known_hosts

root@centos7 ~]# cat  ~/.ssh/id_rsa_2048\ \(2\)  >> ~/.ssh/authorized_keys

# 另外要注意請務必要將服務器上

~/.ssh權限設置爲700

~/.ssh/authorized_keys的權限設置爲600

# 這是linux的安全要求,若是權限不對,自動登陸將不會生效

2、使用軟件登陸Linux

360截圖20210421154754195.jpg

相關文章
相關標籤/搜索