解決策 1:
問題は、リスナーを localhost:22; にバインドすることです。それを聞いているsshdがすでにあります。 ssh 接続を介して ssh 接続をトンネリングすることは完全に合法であり、私は常に行っていますが、転送リスナー用に未使用のポートを選択する必要があります。
試す
me% ssh [email protected] -L 2201:192.168.25.100:22
それから
me% ssh localhost -p 2201
サーバー B に到達する必要があります (何かが既に私にバインドされていない限り:2201。その場合は、別のポートを選択してください)。
解決策 2:
プロキシ経由で内部コンピューターに ssh 接続するために、ssh ポート フォワーディングを使用する必要はありません。 3 番目のコンピューターに ssh 接続するために、最初に接続したサーバーでコマンドを実行する ssh 機能を使用できます。
ssh -t [email protected] ssh [email protected]
-t
オプションは、対話型コマンドを実行できるように、ssh に疑似 tty の割り当てを強制します。
これは、ssh キーでも機能します。マシン A に秘密鍵と公開鍵があり、マシン B と C の認証済み鍵ファイルに公開鍵がある場合、-A
を使用できます。 認証エージェント接続を転送するオプション
解決策 3:
OpenSSH 7.3 (2016 年後半) の時点で、最も簡単な方法は ProxyJump 設定です。あなたの ~/.ssh/config
で :
Host B
ProxyJump A
またはコマンドラインで、 -J B
.
解決策 4:
別のソリューションを使用しました。 ProxyCommand
を使用しました オプション (ここでは ~/.ssh/config
):
Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i
これは、ポート間トンネルをセットアップせず、代わりに標準の stdin/out を使用して ssh をトンネリングします。この方法には、認証する ssh 接続が実際には 3 つあるという欠点があります。ただし、内部ホストに接続するには、次のように入力するだけです:
ssh myinsidehost2
...そのため、そのトンネルの IP の選択を気にする必要はありません。
解決策 5:
ssh のマニュアル ページによると、ProxyCommand が正しい方法です
構文は次のとおりです:
ProxyCommand ssh -W %h:%p [email protected] 2> /dev/null