すべての SSH 接続に ProxyCommand を使用する

すべての SSH 接続に ProxyCommand を使用する

私はSSHプロキシサーバー、別名ジャンプホストというアイデアを思いつき、それを使ってすべてのサーバーに接続しようとしていました。"隠れた"サーバー。基本的には次の設定になっています。ここではホスト名ではなく IP アドレスを意図的に使用していることに注意してください。

<client> ---> <proxy_ssh> ---> <192.168.0.*>

私の意図は、ユーザーにとって可能な限り透明性があることです。したがって、理想的には、ユーザーは次のコマンドを実行するだけでよいはずです。

# ssh [email protected]

これを機能させるために、次のものを作成しました.ssh/config

Host *                                                                                                                                                                           
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               

Host 192.168.0.*                                                                                                                                                                   
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

これは問題なく動作します。しかし、サーバーの背後で作業するネットワークがさらにある場合は、少々面倒です。そこで、セクションに をproxy_ssh単純に追加してみましたが、うまくいきませんでした。ProxyCommandHost *

私はこれをエンドユーザーにとってより透過的なものにしたかったので、特定のホスト定義を省略して、ssh 構成を次のように変更しました。

Host *
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

この影響で、エンドホストに接続できなくなりました。接続がタイムアウトになりました。

そこで私の質問は、すべての SSH 接続がホストを使用するように、これをより透過的にする方法があるかどうかですproxy_ssh

答え1

上記の例では、再帰的にすべての接続でプロキシ コマンドが使用され、別のプロキシ コマンドを使用した ssh が再び使用されます。プロキシを DOS 攻撃する良い方法です。

プロキシをリストから除外し、-F /dev/nullプロキシ コマンドの設定を無視するか、プロキシ ssh のプロキシ コマンドだけを無視する必要があります。

ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p

答え2

プロキシ コマンドをオーバーライドするジャンプ ホストの設定にエントリを追加します。

Host proxy_ssh.example.com
  ProxyCommand none

それ以外の場合は、プロキシ コマンドを使用してジャンプ ホスト自体にアクセスしようとします。

関連情報