server A
インターネットに公開されている ssh サーバーを介して、自宅から職場のサーバー ( ) に接続できます。
server C
から直接アクセスできない別のオフィスのサーバー ( ) でコマンドを実行する必要がありますserver A
。
ただし、アクセスでき、そこからアクセスできる中間サーバー ( server B
)があります。server A
server C
+------+ +----------+ +----------+ +----------+
| home |---| server A |---| server B |---| server C |
+------+ +----------+ +----------+ +----------+
次のように ssh を使用してリモート サーバー上でコマンドを実行できることはわかっています。
ssh hostname command
そこで、複数のsshコマンドをつなげてみました
ssh server_A ssh server_B ssh server_C command
しかし、エラーが発生します:
ssh: Could not resolve hostname server_B: Name or service not known
これは、DNS ルックアップがリモート サーバーではなくローカルで行われていることを示しているようです。
注記:
ローカル DNS サーバーが解決できるホストを使用して複数の SSH コマンドを連結してみましたが、うまくいきました。つまり、DNS ルックアップの問題を解決できれば、目的を達成できるはずです。
質問:
複数の ssh コマンドを連結し、次のコマンドが実行されるリモート サーバーでのみ名前の検索が行われるようにするにはどうすればよいでしょうか?
答え1
私の知る限り、名前解決はリモートで行われます。
/etc/hosts
クラウド上の自分のサーバーに名前を付けるためにローカルを設定するping server
ローカルDNS解決が機能するようにサーバーにpingを送信しますssh server ping server
言うping: unknown host server
ssh server ssh server
言うssh: Could not resolve hostname server: Name or service not known
したがって、文字列内のコマンドの名前解決はローカルでは行われません。アドレスを取得できない場合は、リモート ホスト自体が名前を解決できないことが原因です。確認するには、serverA で SSH プロンプトを起動し、serverB を解決できるかどうかを確認します (ping
または、そうでない場合)。