web-dev-qa-db-ja.com

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

私は、SSHプロキシサーバーまたはジャンプホストと呼ばれるものを使用して、すべての"hidden"サーバーに接続するというアイデアをいじっていました。だから基本的に私は次の設定をしています。ここでは、ホスト名の代わりに意図的に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ホストを使用するように、これをより透過的にする方法はありますか?

3
latz

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

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

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

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

Host proxy_ssh.example.com
  ProxyCommand none

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

0
Barmar