これは実際にAnsibleとは関係ありません。制御パスは、SSHがマルチプレックスセッション用のソケットを格納する場所です。
http://man.openbsd.org/ssh_config.5
ControlPath
上記のControlMaster部または文字列「なし」に記載されているように、接続の共有を無効にするために、接続の共有のために使用される制御ソケットへのパスを指定します。パスでは、 '%L'はローカルホスト名の最初の要素に置き換えられ、 '%l'はローカルホスト名(任意のドメイン名を含む)に置き換えられ、 '%h'はターゲットに置き換えられます'%n'はコマンドラインで指定された元のターゲットホスト名、 '%p'は宛先ポート、 '%r'はリモートログインユーザ名、 '%u'はユーザ名で、 '% iはssh(1)を実行しているユーザの数値ユーザID(uid)で、連結のハッシュでは '%C'%l%h%p%rです。便宜的な接続共有に使用されるControlPathには、少なくとも%h、%p、%r(または%C)が含まれ、他のユーザーが書き込み可能でないディレクトリに配置することをお勧めします。これにより、共有接続が一意に識別されます。
したがって、ホストIPのプレースホルダはありません。パスを短くすることは常に妥協です。 ~/%%h‐%%r
は、すでに安全ではない最短の解決策です。別のリモートユーザーを使用してホストに接続することを保証できない場合は、%r
を削除して%h
のみを使用しても安全です。
問題がホスト名が長すぎる場合は、.ssh/configにエイリアスを作成するのが解決策ですか?
host short-name
hostname very-long-name-that-makes-control-path-location-exceed-the-possible-length-limitation
%n
は、代わりに%h
を用いることができるshort-name
を参照すべきです。
vアドバイスありがとうございました! –