私は 2 台のサーバーを持っており、middle
はにアクセスするためのプロキシとして使用されていますremote
。の SSH 構成を次のように設定して、ControlMaster 経由で への接続を維持できるようにしました。middle
remote
middle
remote
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 の構成が正しい場合、既存の永続的な接続が再利用されます。