私の質問は次のとおりです: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
更新:理論上は、できるHost
IPアドレスと一致するようにスタンザを構成することをお勧めしますに対してそうする。
特定のIPアドレスでホストに直接アクセスできない場合は、次のように参照する必要があります。名前- 同じ (プライベート) IP スペースが複数のホストに割り当てられている場合、それぞれに正しい ProxyJump 構成を割り当てることが不可能になるとどうなるか想像してみてください。
ホストを参照するためにアドレスを使用することが好ましくないもう 1 つの理由は、複数のアドレス ファミリを介してホストに到達可能であることです。ホストが IPv4 および IPv6 を介して到達可能である場合、おそらく SSH 接続はプロトコルに依存しないようにし、実際に (自動) 選択を制限する必要がある場合にのみフラグを追加することになります。