次のようなAWSのベストプラクティスBastion Machine SSH経由でアクセスできるインフラストラクチャを設定しました。
localhost → bastion → target server
ターゲットサーバーに接続するには、localhostと要塞ボックスにキーファイルがあり、SSHを使用して次のようにジャンプします。
localhost > ssh -i key.pem bastion
bastion > ssh -i key.pem target
のように見えるこの問題関連。 localhostから直接ターゲットサーバーにコマンドを実行するには?
答え1
SSH構成でProxyCommandを使用する必要があります。まだ設定していない場合は、~/.ssh/config
次をご覧ください。ここ
したがって、次のことをしたいと思います。
SSH 構成で要塞を転送プロキシとして配置します。
ProxyCommandを使用して、要塞からターゲットサーバーへの接続をプロキシします。
簡単な例は次のとおりです。
Host <bastion>
ForwardAgent yes
Host <target_server>
User <user>
Hostname <Ip/Hostname>
ProxyCommand ssh -q -W %h:%p <user>@<bastion> nc 2> /dev/null
IdentityFile ~/.ssh/id_rsa
答え2
コマンドラインから次のコマンドを使用して、ターゲットtop
システムで実行するなどのリモートコマンドを実行します。
$ ssh -qt bastion "ssh -qt target \"top\"\"
これは特定のユーザーと一緒に使用または実行するsudo
こともできます。sudo su - user
$ ssh -qt bastion "ssh -qt target \"sudo su - user1 -c 'ls -l'\""
ssh
例のオプションが実行する操作は次のとおりです。
ssh -q
=静かで、干渉を最小限に抑えるためにサーバーのバナーを抑制します。ssh -t
=ターミナル、疑似ターミナルを強制的に割り当て、ターミナル指向コマンド(およびtop
)をsudo
使用して対話型セッションを許可します。