如何自動接受SSH金鑰指紋?

語言: CN / TW / HK
首次連線到Linux系統時,SSH會提示你接受計算機的指紋以成功建立連線,因為“ known_hosts”檔案中沒有指紋。

如何自動接受SSH金鑰指紋?如何自動接受SSH金鑰指紋?
指紋是系統公鑰的縮寫版本,為了保護自己免受中間人攻擊(MITM),ssh程式使用自上次連線以來儲存的指紋驗證遠端系統ssh的指紋。如果指紋已更改,系統將提醒你並詢問是否要繼續。

有時你可能需要自動接受SSH指紋。例如,如果建立了一個shell指令碼用來遠端管理多臺linux伺服器。

可以使用以下兩種方法來完成此操作。

  • 使用StrictHostKeyChecking=no選項自動接受ssh指紋。
  • 使用ssk-keyscan命令接受ssh指紋。

首次連線到遠端計算機時,將警告你無法建立主機的真實性,並提供金鑰指紋以進行驗證。
如何自動接受SSH金鑰指紋?如何自動接受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

如何自動接受SSH金鑰指紋?如何自動接受SSH金鑰指紋?
以上警告表明它已將一個金鑰新增到known_host檔案。
如何自動接受SSH金鑰指紋?如何自動接受SSH金鑰指紋?

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

如何自動接受SSH金鑰指紋?如何自動接受SSH金鑰指紋?

總結

首次連線到Linux系統時,SSH會提示你接受計算機的指紋以成功建立連線,因為“ known_hosts”檔案中沒有指紋。