ssh: 永続的な ControlMaster 接続経由の ProxyCommand

ssh: 永続的な ControlMaster 接続経由の ProxyCommand

私は 2 台のサーバーを持っており、middleはにアクセスするためのプロキシとして使用されていますremote。の SSH 構成を次のように設定して、ControlMaster 経由で への接続を維持できるようにしました。middleremotemiddleremote

Host remote ControlMaster auto ControlPath ~/.ssh/%r@%h:%p ControlPersist yes

middleからへの永続的な接続を作成しましたremote。 の認証はremote複雑なので、これは便利です。

remoteローカルホストから経由してSSHできるようにローカルSSH構成を設定したいと思いますmiddle上記で作成した接続を再利用する。 として手動でこれを行うことはできますssh -t middle ssh remoteが、ProxyCommand オプションを使用して同じことを実現する方法がわかりません。これは、 にファイルを scp で転送する場合に特に面倒ですremote

動作しないProxyCommandsには以下が含まれます

  • ssh middle -W remote:22(接続を再利用しません)
  • ssh middle -t remote(シェルまで行くと、シェルではなく sshd と通信することを期待しているローカル ssh クライアントが混乱します)

答え1

SSH の ControlMaster メカニズム全体を誤解していると思います。その考え方は、接続がローカル システム、つまり「中間」サーバー上で再利用されるというものです。つまり、本質的には、接続を再利用するには、「中間」サーバー上で SSH クライアントを呼び出す必要があります。次のようになります。

ssh ミドル「ssh リモート」

これにより、最初に「middle」に接続し、次にそこで ssh クライアントを起動して「remote」に接続します。2 番目の接続では、ControlMaster の構成が正しい場合、既存の永続的な接続が再利用されます。

関連情報