ssh進階,免密登入

不太聪明的大鹅發表於2024-03-10

免密登入(重點)

  • 公鑰:一串字串,在非對稱加密裡面用來加密資料,隨意公開。
  • 私鑰:一串字串,在非對稱加密裡面用來解密資料,不能洩露。
    • 你原本是用root的密碼進行身份驗證,登入該伺服器
    • 客戶端更換為公鑰形式登入
  • 普通金鑰:一串字串。在對稱加密裡面,加密和解密都用它

基於公私鑰的認證(免密碼登入)

windows免密登入linux

1. 生成公私鑰,客戶端的
客戶端的~/.ssh 這個目錄,就存放了客戶端機器的公私鑰檔案
ssh-keygen
生成之後檢視公鑰私鑰
$ ls ~/.ssh
id_rsa  id_rsa.pub

2.發給服務端
客戶端的公私鑰對以及有了,把客戶端的公鑰,發給服務端(~/.ssh/)
[root@m-61 ~]#ls ~/.ssh
known_hosts

透過命令,吧客戶端的公鑰,寫入到服務端的authorized_keys檔案中

$ ssh-copy-id root@10.0.0.61


3.檢查服務端的 信任主機公鑰檔案 
這裡存放了 客戶端的公鑰字串
[root@m-61 ~]#cat  ~/.ssh/authorized_keys 


4.此時已經可以免密登入了,只能透過git-bash這個工具去免密登入,因為記錄該主機名

ssh root@10.0.0.61

linux免密登入linux

master-61  免密登入 web-7

1.在61機器生成公私鑰對兒
ls ~/.ssh/
[root@m-61 ~]#ssh-keygen 

2.檢查公私鑰
[root@m-61 ~]#ll ~/.ssh/

3.傳送master-61的公鑰,給web-7
為了免密登入
ssh-copy-id root@10.0.0.7

問題:web-7是如何允許master-61登入自己的

前提一定你透過某辦法,吧master-61的公鑰,寫入到web-7機器的~/.ssh/authorized_keys
web-7 會去自己的 ~/.ssh/authorized_keys 是否有master-61的公鑰

ssh賬戶密碼認證涉及的配置檔案、命令、以及作用

/etc/ssh/sshd_config 
Port 22999   修改埠
PubkeyAuthentication yes   允許公鑰登入
PasswordAuthentication no    禁止密碼登入
systemctl restart sshd   重啟服務

ssh公私鑰認證涉及的配置檔案、命令、以及作用

ssh-keygen   生成公鑰對
ll ~/.ssh/   生成公鑰對的檔案位置
ssh-copy-id root@10.0.0.7  將公鑰傳送給另一個機器
~/.ssh/authorized_keys   另一個機器接收到的公鑰寫入的檔案

限制主機登入條件、設定iptables規則,只允許跳板機的流量(172.16.1.61)登入,其他機器的流量全部禁止。(只限定ssh的服務,限制22999的流量)

在想新增該規則的機器上執行

針對web-7限定只允許 master-61訪問

[root@web-7 ~]#iptables -A INPUT ! -s 172.16.1.61 -p tcp --dport 22999 -j DROP
[root@web-7 ~]#
[root@web-7 ~]#
[root@web-7 ~]#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  -- !172.16.1.61          anywhere             tcp dpt:22999

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

相關文章