SSH ControlPathはホスト名%hの代わりにIPアドレスを使用します。

SSH ControlPathはホスト名%hの代わりにIPアドレスを使用します。

現在私はこれを制御パスとして使用しています。

  ControlPath /home/user/.ssh/sockets/ssh_mux_%h_%p_%r

ホスト名「redishost」に接続すると、redishostでソケットが生成されます。
IPアドレスを使用して同じホスト「redishost」に接続すると、IPアドレスでソケットが作成されます。

すべてのSSH接続に対して制御パスでホスト名%hの代わりにipを使用できますか?

答え1

リモートホストを参照するために使用できる唯一のトークンは%hなので、これは不可能に見えます。バラよりhttps://man.openbsd.org/ssh_config#TOKENS

ホスト名の代わりにIPアドレスを使用するようになった動機について詳しく教えてください。おそらく私たちはこの問題に対する代替解決策を見つけるでしょう。

答え2

openssh don't have any token for controlpath expression where ip address can be specified. opensshドキュメントとソースコードを確認した結果、使用したい場合は私のリポジトリを使用できることがわかり、opensshソースコードを編集してIPアドレス解決のために%xトークンを追加しました。

ControlPathは次のようになります。

  ControlPath /home/user/.ssh/sockets/ssh_mux_%x_%p_%r

ControlPathでサポートされているトークン:

        "l", thishost,
        "n", host_arg,              "n", host_arg,
        "p", portstr,               "p", portstr,
        "x", hostip,
        "r", options.user,              "r", options.user,
        "u", pw->pw_name,               "u", pw->pw_name,
        "i", uidstr,                "i", uidstr,
        "h", host,

https://github.com/akhilin/openssh-portable/commit/a2d95e090b73f36590e8c189685ce8cea810f49a

関連情報