如何自動接受SSH金鑰指紋?
首次連線到Linux系統時,SSH會提示你接受計算機的指紋以成功建立連線,因為“ known_hosts”檔案中沒有指紋。 |
指紋是系統公鑰的縮寫版本,為了保護自己免受中間人攻擊(MITM),ssh程式使用自上次連線以來儲存的指紋驗證遠端系統ssh的指紋。如果指紋已更改,系統將提醒你並詢問是否要繼續。
有時你可能需要自動接受SSH指紋。例如,如果建立了一個shell指令碼用來遠端管理多臺linux伺服器。
可以使用以下兩種方法來完成此操作。
- 使用
StrictHostKeyChecking=no
選項自動接受ssh指紋。 - 使用
ssk-keyscan
命令接受ssh指紋。
首次連線到遠端計算機時,將警告你無法建立主機的真實性,並提供金鑰指紋以進行驗證。
接受指紋後,它將被儲存在“known_hosts”檔案中,當重新連線到同一個遠端主機時,SSH根據known_hosts檔案檢查指紋,以驗證其身份。
1、如何使用SSH選項自動接受SSH金鑰指紋?
此方法簡單明瞭,只需使用SSH命令新增選項即可實現。使用此選項時,ssh會自動將新的主機金鑰新增到使用者known_hosts檔案中。
[root@localhost ~]# ssh -o "StrictHostKeyChecking no" localhost Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. root@localhost's password: Last login: Mon Jan 25 20:01:53 2021 from 192.168.43.1
以上警告表明它已將一個金鑰新增到known_host檔案。
2、如何使用ssk-keyscan命令自動接受SSH金鑰指紋?
這是另一種方法,ssh-keycan
允許你將ssh指紋附加到known_hosts檔案中。當你想要批量新增時,此工具非常有用。使用下面命令操作:
[root@localhost ~]# ssh-keyscan -H 192.168.43.138 >> ~/.ssh/known_hosts # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4
使用以下命令將多臺遠端主機的ssh指紋新增到known_hosts。必須將遠端主機的IP地址新增到一個檔案中,並使用ssh-keyscan命令呼叫它,如下所示,將各個遠端伺服器的ip地址儲存在文字檔案裡面:
[root@localhost ~]# cat remote-hosts.txt 192.168.43.137 192.168.43.138 192.168.43.166
然後使用ssh-keyscan
工具將它們的ssh指紋新增到known_hosts:
[root@localhost ~]# ssh-keyscan -f ./remote-hosts.txt >> ~/.ssh/known_hosts # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.137:22 SSH-2.0-OpenSSH_7.8 # 192.168.43.137:22 SSH-2.0-OpenSSH_7.8 # 192.168.43.137:22 SSH-2.0-OpenSSH_7.8 # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.138:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.166:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.166:22 SSH-2.0-OpenSSH_7.4 # 192.168.43.166:22 SSH-2.0-OpenSSH_7.4
總結
首次連線到Linux系統時,SSH會提示你接受計算機的指紋以成功建立連線,因為“ known_hosts”檔案中沒有指紋。
「其他文章」
- findmnt命令查詢已掛載的檔案系統
- 在Linux中如何檢視檔案的修改日期
- 用FRP做內網穿透使用遠端桌面連線家裡的windows電腦
- SUSE Linux 的Zypper包管理器使用例項
- 如何使用nload實時監控網路頻寬
- 如何使用awk處理文字內容
- 如何將CentOS 8轉換為CentOS Stream
- 如何自動接受SSH金鑰指紋?
- 夏天到了用TypeScript給自己開個小空調吧
- Bash Shell指令碼中的陣列使用例項
- Linux系統中的basename命令使用例項
- centos8使用chrony作為NTP伺服器
- Linux中如何使用Aria2下載檔案
- Centos8 如何配置DHCP伺服器
- 如何在Shell指令碼中逐行讀取檔案
- 使用Systemctl命令來管理系統服務
- 使用lsblk命令列出系統中的塊裝置
- 如何在Linux中使用 Truncate 命令
- Centos8種如何更改執行級別
- Zeit – Linux圖形化中定時任務的工具