ssh
jump_host
私が知っている限り、次の接続に使用できる構成バリアントは少なくとも3つありますtarget_host
。
Host jump_host
HostName 1.2.3.4
# Variant - 1
Host target_host
HostName 172.16.0.1
ProxyCommand ssh -q -x jump_host 'netcat %h 22'
# Variant - 2
Host target_host
HostName 172.16.0.1
ProxyCommand ssh -q -x jump_host -W '%h:22'
# Variant - 3
Host target_host
HostName 172.16.0.1
ProxyJump jump_host
この方法は他の方法よりも優れていますか?構成2と3の違い(ある場合)は何ですか?明らかに、構成1をnetcat
準備する必要があるため、最も魅力的ではありません。
答え1
バリアント1は2回検証されます。プロキシコマンドを一度使用して接続を確立した後、元のsshコマンドを再利用してください。単にnetcat %h %p
バリアント1を作成し、ホストパラメータを使用してsshコマンドで実行したいのと同じことを実行することもできます。
Host target_host
HostName 172.16.0.1
LogLevel QUIET
ForwardX11 no
ProxyCommand netcat %h %p
しかし、それでもnetcatをサポートするには、ptyと接続の一部として追加のプロセスが必要です。
バリアント2はnetcatと同じことを行いますが、内部的にはptyを割り当てずに、必要に応じてバリアント1とまったく同じように書き換えることができます。また、プロキシ転送などのホストのすべての設定がリダイレクトされるのを防ぎます。
バリアント1と2は、接続を自動的に確立する一般的な方法であるProxyCommandを使用します。これらのバリエーションは、主にProxyJumpがそれ以降に存在したために存在します。ただし、ProxyCommandを使用すると、接続設定を使用して高度な操作を実行できます。ドキュメントは、接続を転送するためにHTTP CONNECTプロキシを設定するためにそれを使用する例を示しています。
バリアント3はデフォルトで組み込みTCPプロキシであるProxyJumpを使用し、バリアント2に最も似ていますが、よりシンプルで制限的なリンクを可能にします。これがない場合は、同じことを行うと次のようになります。
Host jumphost2
ProxyCommand ssh -W %h:%p jumphost1
Host server
ProxyCommand ssh -W %h:%p jumphost2
しかし、ProxyJumpを使用すると、次のようになります。
Host server
ProxyJump jumphost2,jumphost1