複数の ssh コマンドを連結しますが、DNS ルックアップはリモートホストまで遅延します。

複数の ssh コマンドを連結しますが、DNS ルックアップはリモートホストまで遅延します。

server Aインターネットに公開されている ssh サーバーを介して、自宅から職場のサーバー ( ) に接続できます。

server Cから直接アクセスできない別のオフィスのサーバー ( ) でコマンドを実行する必要がありますserver A

ただし、アクセスでき、そこからアクセスできる中間サーバー ( server B)があります。server Aserver 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または、そうでない場合)。

関連情報