2011-10-18 15 views
2

私はサーバAを削除するためにgitリポジトリを持っています。私は通常、私の作業マシンからssh経由でアクセスします。sshチェインを使用してリモートサーバからgitクローンを作成

 
git clone [email protected]:/path/to/repo 

ただし、外部の仕事から直接アクセスすることはできません。別のサーバーBがあります。これはsshに入り、Aにsshすることができます。私が今したいことは、自宅のマシン上のリポジトリをクローンすることです。私はもののようなものを試しました

 
git clone B:A:/path/to/repo 
git clone [email protected]:A/path/to/repo 

どちらもうまくいきませんでした。私は、B上にレポをコピーしてそこからクローンを作成することができますが、Aへの変更をマージすることは面倒です。どのように私が直接Aにアクセスすることができますか?

私はあなたがこれを見てみましょうA. を通してそれを作るためにSSH-トンネルたいと思います

答えて

5

を使用すると、サーバーAとサーバーBの間でパスワードなしのSSHを設定している場合、あなたは簡単に書くことができますがSSH経由でサーバAに接続し、Gitの引数でコマンドSSHを実行するラッパースクリプト。

スクリプトを作成します。

cat <<EOF> ssh-wrapper.sh 
#!/bin/sh 
ssh -T serverB.example.com ssh ${@} 
exit $? 
EOF 
chmod 755 ssh-wrapper.sh 

は、その後にGitを./ssh-wrapper.shして呼び出すようにGIT_SSHを設定します。

GIT_SSH='./ssh-wrapper.sh' git clone [email protected]:/path/to/repo 
+0

グレート、感謝を。読者には、標準的な構文(例: "git commit -m"ラッパーへのパスを指定してプッシュ:GIT_SSH = '。/ ssh-wrapper.sh' git push – mbatchkarov

+0

ruby​​のバンドラを特定のデプロイキーで呼び出す必要がありました。検索の年月を経て、私は最終的にあなたの答えに魔法のenv変数を見つけました。ありがとう! –

関連する問題