centos7下ssh服務登陸認證詳解


ssh 是一種網絡協議,為遠程登陸和其他服務提供了安全協議。在 ssh 沒出來之前,很多服務是明文傳輸的,很不安全。ssh 的出現就是為了解決這種問題。

現在大多數的 linux 主機默認就裝上了 sshd 服務,方便我們使用。

如果沒有安裝,則查看,並安裝。

rpm -qa|grep ssh
yum install -y openssh openssh-server
systemctl enable sshd
systemctl start sshd
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload

  

一、ssh的兩種安全驗證

1、基於口令的登陸

比如我們在主機 192.168.10.222 上通過 ssh 以 root 用戶連接 223 主機,注意 223 主機上必須要有 root 用戶。

ssh root@192.168.10.223

  

如果第一次登陸遠程主機,系統提示該主機安全性無法確定,是否繼續。當我們輸入 yes 后,該遠程主機的公鑰會保存在 ~/.ssh/known_hosts 文件中。

再次登陸時,會跳過警告,直接提示輸入密碼。

然后我們輸入密碼,就可以成功登陸到 223 主機了。

整個登陸流程如下:

1、222 主機發起遠程登陸請求。

2、223 遠程主機返回公鑰給 222。

3、222 主機使用公鑰對用戶輸入的密碼進行加密。

4、222 把加密后的密碼發給 223 主機。

5、223 主機用私鑰進行解密。

6、解密后判斷密碼是否一致,一致就同意登陸。

當然,上面的流程會存在一個漏洞,如果有人冒充了 223 主機,把偽造的公鑰發給222,那冒充主機就可以獲取用戶的登陸密碼了。

 

2、基於公鑰的免密登陸

由於時常需要跑一些自動化腳本,為了避免每次登陸需要輸入密碼,我們需要配置一對密鑰。

ssh-keygen

也可以指定用戶運行 ssh-keygen,那樣生成的密鑰對就是針對指定用戶的。

sudo -u 用戶名 ssh-keygen

通過 ssh-keygen 一路回車,將會在當前用戶的家目錄下的 .ssh 目錄下創建 id_rsa 和  id_rsa.pub 兩個文件。

由於222 主機當前登陸用戶為 root,所以路徑為 /root/.ssh/ 。

為了能夠以 root 用戶登陸到 223 主機。我們需要把 222 主機上的 root 用戶的公鑰拷貝到 223 主機的 root 用戶上。

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.223

傳輸公鑰時,需要我們輸入 223 主機 root 用戶的密碼,輸入成功后,則公鑰就拷貝到了 223 主機的 root 用戶家目錄下的 .ssh/authorized_keys 文件里。

這樣,我們再次遠程連接時,就不需要輸入密碼了。

ssh root@192.168.10.223  

注意,你請求主機以什么用戶連接遠程主機,你就把當前用戶的公鑰拷貝到你要連的遠程主機的用戶下。

比如,我們在 222 主機上創建 test 用戶並切換到 test 用戶,然后連接 223 主機。

adduser test
passwd test
su test

然后我們為 test 用戶生成密鑰對,然后把公鑰拷貝到 223 主機的 root 用戶上。

ssh-keygen
ssh-copy-id -i /home/test/.ssh/id_rsa.pub root@192.168.10.223

這樣,我們以 222 主機上的 test 用戶,就可以免密登陸 223 主機了。

ssh root@192.168.10.223

切回 root 用戶后,我們仍可以 test 用戶登陸遠程主機。

sudo -u test ssh root@192.168.10.223

登陸流程如下:

1、222 主機發起遠程登陸請求。
2、遠程 223 主機返回一個隨機串。
3、222 主機對這個隨機串用私鑰進行加密,並返回給遠程 223 主機。
4、223 遠程主機使用分發過來的公鑰對隨機串進行解密。
5、解密成功,說明登陸信息正確,允許登陸。

 


免責聲明!

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



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