2011-01-22 8 views
7

私の会社のサーバからパーソナルコンピュータにgitリポジトリをクローンしたいと思います。 「外」からこれらのサーバーをアクセスもする唯一の方法は、「machine1に」残念ながらリモートsshリポジトリからクローンを削除する - クローンコマンドを実行する前にリモートネットワーク上のマシンを変更する

ssh [email protected] 

、その特定のマシンにインストールされていないのgitイストへのsshごとにログインすることです。ので、gitのクローンのように

git clone ssh://[email protected]/path/to/repo <local-repo-path> 

は動作しません。私がしなければならないことは、 'machine1'経由でネットワークにログインした後にgitがインストールされている別のマシン 'machine2'に変更することです。だから、クローンを稼働させるには、実際にgitコマンドを実行する前に、

ssh machine2 

のようなコマンドを実行しなければなりません。それを行う方法はありますか?おそらく、クローン前のフックのようなものがありますか?

リモートのリポジトリを何らかの形でファイル(パッチ?)にパックして、そのファイルをローカルマシンにコピーして、そのファイルからクローンすることはできますか?

ヒントやご提案をお待ちしております。

答えて

13

これは、ssh proxyコマンドを設定することで可能です。注:これは、netcatがプロキシサーバーで利用可能であると仮定しています。 netcatをperlなどの同様のスクリプトで置き換えることができます。

は、必要であれば、それを作成し、あなたの ~/.ssh/configに以下を追加します。

Host machine1 
User yourusername 
HostName machine1.yourcompany.com 

Host machine2 
User yourusername 
ProxyCommand ssh machine1 nc %h %p 
HostName machine2.internal.network 

今することができますssh machine2、それ意志machine1に通じ、自動的にトンネル。これは、gitの使用がgit clone ssh://machine2/pathのように簡単であることを意味します。

git bundleコマンドを使用して、リポジトリを1つのファイルにバンドルすることもできます。しかし、これは適切なsshプロキシー設定では必要ないはずです。

+0

これは素晴らしい解決策のようです。残念ながら、netcatは明らかにリモートマシン上で終了しません。 SunOS 10を実行しているsparcアーキテクチャです.netcatの代替手段はありますか? – Deve

+1

唯一の要件は、stdin/stdoutから任意のリモートホストにリレーする簡単なプログラムをまとめたことです。どんなスクリプト言語でも簡単なスクリプトを一緒に投げたり、netcatやsocatなどをコンパイルしてあなたのホームディレクトリに置いたりすることができます – bdonlan

+0

さて、どういう意味なのでしょうか。私には挑戦のようですが、ベストを尽くします。再度、感謝します! – Deve

関連する問題