
以前に質問されていたら申し訳ありませんが、現在、RDP ゲートウェイと同じように SSH 接続を確立できるソリューションを探しています。ご存じない方のために説明すると、RDP ゲートウェイを使用すると、基本的に別のサーバーを介して RDP 接続をプロキシできます。リモート デスクトップは RDP ゲートウェイ サーバーで透過的に認証し、そこからエンドポイント サーバーへの接続を確立します。これにより、プライベート IP アドレスまたは内部 DNS 名でエンドポイント サーバーを参照できるようになり、露出が制限されます。
現在考えているのは、SSH 経由でポート転送を設定して、トンネル プロキシの背後でアクセスする必要があるすべてのサーバーが、中間点サーバーによって転送される別のポート上にあるようにすることです。ただし、これは最適な解決策ではないように思われるため、これを実行するより良い方法があるかどうかを知りたいと思っています。
答え1
SSH用語では、要塞ホストまたはジャンプサーバー- 着信 SSH 接続を受け入れ、そこから管理する実際のシステムに SSH 接続できる単一のマシン (通常は DMZ 内)。
==> | Server1 |
_________ ___________ / ---------
| user PC | ===(SSH on port 22)===> | jump host | ===(SSH on port 22)== ==+> | Server2 |
_________ ___________ \ _________
==> | Server3 |
多くの場合、セキュリティを強化するために、ジャンプ サーバーは二要素認証を要求したり、VPN 接続を確立した後にのみ着信 SSH セッションを受け入れたりします。
最初にジャンプホストにログオンし、コマンドプロンプトから2番目のSSHセッションを開始する代わりに、OpenSSHでは1つのコマンドでそれを構成できます。
私は、各ホストの短いエイリアスを使用して、すべての設定を明示的に設定することを好みます~/.ssh/config
。 そうすれば、コマンドライン フラグを使用する必要がなくなり、単に less と入力して使用すればssh Destination
完了します。
Host jumphost
Hostname jumphost.example.com
User serverfault
ForwardAgent yes
AddKeysToAgent yes
UseKeychain yes # Specific to OS X
IdentityFile ~/.ssh/id_rsa.jumphost
Host server1
Hostname server1.int.example.com
User hbruijn
ForwardAgent yes
AddKeysToAgent yes
UseKeychain yes # Specific to OS X
IdentityFile ~/.ssh/id_rsa.int.example.com
ProxyJump jumphost
ProxyJump
は比較的新しい設定で、 よりも直感的に使用できると思いますProxyCommand
。 はssh server1
まさに必要なことを実行します。まず、 を[email protected]
最初のホップとして使用してセッションを作成し、そこから、オプションで別の SSH キーと別のユーザー名を使用して次のホップにトンネルします[email protected]
。
コマンドラインから ProxyJump コマンドを直接使用することもできます。
ssh -J [email protected] [email protected]
別のアプローチについては、このQ&A
答え2
標準的な解決策は、IPv6 (および/または VPN) を導入して、このような回避策を最初から回避することですが、現在それができない場合は、ジャンプ ボックス、要塞ホスト、または同様の用語で呼ばれます。これは、ユーザーが ssh でログインし、そのボックスがネットワーク アクセスできる内部ホストにさらに ssh で接続できるように設置するマシンです。このssh
コマンドには、ジャンプ ホスト経由での接続を自動化するコマンド ライン オプションもあります。
-J destination
Connect to the target host by first making a ssh connection to
the jump host described by destination and then establishing a
TCP forwarding to the ultimate destination from there. Multiple
jump hops may be specified separated by comma characters. This
is a shortcut to specify a ProxyJump configuration directive.
Note that configuration directives supplied on the command-line
generally apply to the destination host and not any specified
jump hosts. Use ~/.ssh/config to specify configuration for jump
hosts.