gitに「ssh」以外のものをsshプログラムとして使用させることは可能ですか?Rsyncには、この目的のための-eオプションと、rshまたはsshをトランスポートとして使用できる他のインターフェースがあります。私が持っている特定のユースケースは、要塞ホストを介してssh接続をチェーンすることです。これは、クローン作成/プル元のホストへの直接sshアクセスがファイアウォールによって許可されていないためです。
これまでに思いついた最善の解決策は、「ssh」という単一の実行可能ファイルを含むディレクトリを作成し、そのディレクトリをPATHの先頭に配置することです。「ssh」ファイルの内容は次のとおりです。
#!/bin/sh
# If we were being clever we'd look at where we were and just snip that
# off the path.
export PATH=/bin:/usr/bin:/sbin:/usr/sbin
exec ssh bastion.example.org ssh "$@"
これは機能しますが、このアプローチにはいくつかの欠点があります。
スクリプトを作成してそれを参照する必要があるため、GIT_SSH環境変数は私が求めていることを実行しないことに注意してください。一方、rysncの-eオプションを使用すると、
rsync -e 'ssh -K bastion.example.org ssh' ...