為什麼 SSH 配置中指定的 IP 範圍沒有繼承 ProxyJump 參數?

為什麼 SSH 配置中指定的 IP 範圍沒有繼承 ProxyJump 參數?

我使用跳轉伺服器 (lab1) 連接到 IP 以 10.* 開頭的伺服器。所有其他伺服器不應使用 lab1 作為跳轉伺服器並需要不同的金鑰。

在主配置中有兩個包含的配置和一些常規設定:

主要 ssh 配置:

Include ~/.ssh/lab.conf
Include ~/.ssh/prod.conf

Host *
  AddKeysToAgent yes
  UseKeychain yes
  User rg2531
  ForwardAgent yes
  ServerAliveInterval 30
  ServerAliveCountMax 10
  IdentityFile /SSH_keys/prod/id_rsa

實驗室.conf:

Host 10.*
  ProxyJump lab1

# Jump server
Host lab1
  HostName 134.121.15.2
  IdentityFile /SSH_keys/dev/id_rsa

# Individual hosts
Host lab2
  HostName 10.10.10.2

產品.conf:

Host prod1
  HostName 122.140.12.1

當我連接到 lab2 時,它應該使用 ProxyJump 透過跳轉伺服器(lab1)連接我,因為我有一個規則,Host 10.* 但它的行為不符合預期。

ProxyJump lab1只有當我放入部分時它才有效Host lab2

Host lab2
  HostName 10.10.10.2
  ProxyJump lab1

為什麼ProxyJumpparam不被繼承?

答案1

因為它適用於您正在使用的名稱。如果您使用ssh 10.10.10.2客戶端,則將使用配置中的 ProxyJump 設定。但如果您這樣做 ssh lab2,則該lab2值不匹配10.*,因此不會使用該設定。因此,這與繼承無關,而是在載入「lab2」的配置並找到主機名稱值後,ssh 不會重新評估配置。

如果該網路上的所有電腦10.10.10.*碰巧都被命名為 lab*,您可以執行類似的操作。

Host lab1
  HostName 134.121.15.2
  IdentityFile /SSH_keys/dev/id_rsa

Host lab* !lab1
  ProxyJump lab1

相關內容