2

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' ...
4

1 に答える 1

2

別のプログラムを使用するように git を構成しようとする代わりに、ssh 自体を構成できます。

ファイルに、新しいセクション~/.ssh/configを追加しますHost

Host git.example.org
  Username myusername
  ProxyCommand ssh bastion.example.org "nc git.example.org 22"

次に、リモートを「git.example.org」ホストに向けるだけです。

また、OpenSSH >= 5.4 を使用していて、サーバー上の netcat に依存したくない場合は、代わりにSSH のnetcat モードを使用できます。

Host git.example.org
  Username myusername
  ProxyCommand ssh bastion.example.org -W "git.example.org:22"
于 2012-10-02T19:11:24.240 に答える