解決策 1:
もちろん; SSH ポート フォワーディング/トンネリングを使用するだけです。次のコマンドを使用して、「プロキシ」マシンへの ssh 接続を開始します:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
:SSH アクセスできるマシン$REMOTEHOST
:$PROXYHOST は接続できるが、接続できないマシン。$PROXYHOST
のホスト名または IP を使用してください マシンを参照するために使用できます$SSHPORT
:リモートホストで sshd がリッスンしているポート。おそらく22$LOCALPORT
:ローカル アウトバウンド ポート SSH が、$REMOTEHOST
のポート 22 に転送するローカル マシンで開かれています。
トンネルを機能させ続けるために、その接続をそのままにしておきます。 -N
も追加するとよいでしょう。 この接続がリモート シェルを起動せず、後で誤って閉じないようにするためです。
トンネルが確立されたら、次の手順を実行します:
ssh -p $LOCALPORT localhost
$REMOTEHOST
に転送されたポートで、ローカル マシンへの SSH 接続を試みます。 の SSH ポート。
解決策 2:
クライアントの構成を更新する場合は、ゲートウェイ ボックスをプロキシとして使用するようにクライアントをセットアップできます。リレー ボックスには netcat をインストールする必要があります。最良の結果を得るには、キーベースの認証をセットアップする必要があります。
別のホスト経由で接続するために .ssh/config で使用するものは次のとおりです。
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] "/bin/netcat -w 1 internal-ssh-host 22"
上記で、コマンド ssh internal-ssh-host-proxy を実行するだけです。 クライアント マシンから。
プロキシ SSH ホストに OpenSSH クライアント 5.4 以降がある場合、netcat は必要なく、代わりに組み込みの netcat モードを使用できます。
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] -W internal-ssh-host:22
解決策 3:
提示された回答の中で、Zordache's が最適な全体的なソリューションです。ただし、後世のために、構成を編集せずにアドホックに接続するだけの場合は、 -t
を使用してください リレー上で直接 ssh を実行するとともに、疑似端末を割り当てるフラグ。
ssh -t relay.example.com ssh internal.example.com
解決策 4:
OpenSSH を使用して、接続を自動的に転送できます。 ~/.ssh/authorized_keys
で ファイルでは、実行するコマンドを指定できます。これは、2 番目のマシンへの SSH である可能性があります。
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
最終的に表示されるのは、Password:
に対する 2 つのプロンプトです。 :リレー サーバー用に 1 つ、ターゲット サーバー用に 1 つ。この動作は、証明書を使用していつでも削除できます。