ProxyJump では ssh できませんが、ssh -J では動作します

ProxyJump では ssh できませんが、ssh -J では動作します

私の質問は次のとおりです:Ubuntu インスタンスを使用して AWS 上で SSH 用の要塞ホストをセットアップするにはどうすればよいですか?

次のことを成功裏に実行できます。

root@e183d80cdabc# ssh -J [email protected] [email protected]
Last login: Sat Sep  4 13:14:17 2021 from 10.240.0.30
==> SUCCESS! ==> ubuntu@ip-10-240-0-20:~$

しかし、~/.ssh/config ファイルアプローチを試みると失敗します。使用したコマンド:

# ssh 10.240.0.20
# ssh [email protected]
# ssh -i ~/.ssh/id_rsa [email protected]

ssh: connect to host 10.240.0.20 port 22: Connection refused

私の ~/.ssh/config は次のようになります:

root@e183d80cdabc# cat $HOME/.ssh/config
Host bastion
  HostName 54.170.186.144
Host remote
  HostName 10.240.0.20
  ProxyJump bastion

次のように AWS 上で Ubuntu を実行しています。

ubuntu@ip-10-240-0-30:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

フィールドを追加してみましたUser ubuntuが、役に立ちませんでした。

私の/etc/ssh/ssh_configサーバーは次のようになります:

Host *
    ForwardX11Trusted yes
    IdentityFile ~/.ssh/id_rsa
    Port 22
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes

アップデート 私は現在、詳細オプションを使用しています。

root@e183d80cdabc# ssh -vvv 10.240.0.20
OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 2: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 10.240.0.20 is address
debug2: ssh_connect_direct
debug1: Connecting to 10.240.0.20 [10.240.0.20] port 22.
debug1: connect to address 10.240.0.20 port 22: Connection refused
ssh: connect to host 10.240.0.20 port 22: Connection refused

ジャンプ ホストを使用していない (つまり、要塞をスキップしている) ようで、直接移動して失敗します。

何かアイデアがあれば大歓迎です!ありがとうございます

=========================================================

更新: 2021-09-04-15-44 - 解決策あり 皆様ありがとうございます。以下に回答としてマークしました。

正しい設定ではホスト名は使用されません。マッチングはホスト。IP アドレスにワイルドカードを含めることもできました。これが私が本当に求めていたことです。

SSH設定

root@e183d80cdabc# cat $HOME/.ssh/config
Host bastion
  HostName 63.33.206.201
  User ubuntu
Host 10.240.0.*
  ProxyJump bastion
  User ubuntu

そして出来上がり!

# ssh 10.240.0.20
...
ubuntu@ip-10-240-0-20:~$

答え1

マッチングはHostではなく stanzaで行われますHostName

試す:

ssh ubuntu@remote

答え2

コマンドラインの違い

ssh -J [email protected] [email protected]

そして、設定を参照するために私がお勧めする方法

ssh remote

後者はIPも両方のマシンにログインするユーザーコマンドラインで - SSH設定を編集して、全てコマンドラインで渡さなくなった情報:

# $HOME/.ssh/config
### The Bastion Host
Host bastion
  HostName 54.170.186.144
  User ubuntu

### The Remote Host
Host remote
  HostName 10.240.0.20
  User ubuntu
  ProxyJump bastion

更新:理論上は、できるHostIPアドレスと一致するようにスタンザを構成することをお勧めしますに対してそうする。

特定のIPアドレスでホストに直接アクセスできない場合は、次のように参照する必要があります。名前- 同じ (プライベート) IP スペースが複数のホストに割り当てられている場合、それぞれに正しい ProxyJump 構成を割り当てることが不可能になるとどうなるか想像してみてください。

ホストを参照するためにアドレスを使用することが好ましくないもう 1 つの理由は、複数のアドレス ファミリを介してホストに到達可能であることです。ホストが IPv4 および IPv6 を介して到達可能である場合、おそらく SSH 接続はプロトコルに依存しないようにし、実際に (自動) 選択を制限する必要がある場合にのみフラグを追加することになります。

関連情報