如何管理多個 SSH 連線

大雄45發表於2021-08-27
導讀 如果你使用多個ssh連線,管理和記住 IP 地址、使用者名稱和密碼、秘鑰會有點困難。在本指南中,將學習使用 ssh 的配置檔案,該檔案儲存 ssh 連線所需的所有資訊。
建立配置檔案並新增主機資訊

每臺基於   / Unix 的機器都有一個  .ssh 資料夾,您可以在其中儲存 ssh 金鑰。在這個資料夾中,你可以建立一個名為  config 的檔案,可以將所有遠端機器的詳細資訊放在這個配置檔案中。

現在使用以下 在  .ssh 資料夾中建立一個配置檔案,如果使用者主目錄中沒有 .ssh資料夾,需要建立一個。

[root@localhost ~]# mkdir ~/.ssh
[root@localhost ~]# touch ~/.ssh/config

下面是一個簡單的例項:

[root@localhost ~]# vim ~/.ssh/config 
Host mysql
  HostName 192.168.0.12
  Port 22
  User root
  IdentityFile ~/.ssh/common_pri_key
Host web
  HostName 192.168.43.137
  Port 5658
  User bob
Host node1
  HostName 192.168.43.131
  Port 22
  User root

如何管理多個 SSH 連線如何管理多個 SSH 連線
上面配置中,設定每臺伺服器的連線名稱,連線地址,埠號,使用者名稱,還可以指定秘鑰檔案。如果伺服器沒有域名,可以提供 IP 地址。

連線測試

現在已經設定了連線到遠端機器所需的所有配置。現在需要連線,只需要使用 ssh 後面加上在配置檔案中指定的 Host名稱即可連線。

[root@localhost ~]# ssh mysql

如何管理多個 SSH 連線如何管理多個 SSH 連線
因為 Host mysql我已經提前設定好免密登入,所以不需要輸入密碼就可以連線了。

定義常用引數

如果需要管理大量伺服器,並且所有伺服器都具有相同的使用者名稱和 ssh 金鑰。在這種情況下,可以使用正規表示式定義一組公共引數。如下:

Host dev
  Hostname 192.168.43.137
Host web.node1
Host web.node2
Host *
  Port 4556
  User jordan
  IdentityFile ~/.ssh/jordan_privatekey
Host web*
  Port 4668
  User james
  IdentityFile ~/.ssh/james_privatekey

在上面的示例中  Host * 表示該塊中描述的引數適用於全域性的伺服器。 Host web* 該塊中描述的引數適用於所有以 web 開頭的主機定義。

Host部分指定的主機名稱如果不能解析,可以在下面指定一個Hostname引數,並寫入他的ip地址。如果Host指定的主機名稱能被解析,可以不新增 Hostname引數。

總結

本指南中我們學習瞭如何使用 ssh 的配置檔案,該檔案儲存 ssh 連線所需的所有資訊。

本文原創地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2789088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章