2011-06-18 22 views
0

ファイアウォールの内側にあるクラスタでホストされているGITリポジトリにアクセスしようとしています。私がキャンパス(ファイアウォールの後ろ)にいるとき、私はクラスタに直接アクセスすることができます。私は、キャンパス外の特定のマシンにSSH接続できます。私が使用してトンネルを設定しようとしたポート転送(SSHトンネル)を使用したgit push

sudo ssh -L 9418:cluster:9418 [email protected] 

が、私はまだ私のマシンから「Gitのプッシュ」を実行することはできませんよ。私は何かが欠けていることを知っているが、それを理解できない。

EDIT: 私が持っているの〜/ .ssh/configのを修正:

Host cluster 
    NoHostAuthenticationForLocalhost yes 
    Hostname localhost 
    Port 9418 

と私はGitのプッシュ実行したときにエラーが発生します:それは、一般的に動作するはずとして、

ssh_exchange_identification: Connection closed by remote host 
fatal: The remote end hung up unexpectedly 

答えて

0

かなり奇妙に: thisは役に立ちますか?あなたはsshの設定ビットを用意していますか?

3

私はGitリモートURLのホスト名部分がlocalhostの代わりにclusterと推測しています。 git config remote.origin.urlの出力は何ですか?それはこのようなものだ場合:sshクライアントは、ローカルマシン上のポート(お使いの場合は9418)を開き、リッスンしているどのようにsshのポートフォワーディング作品

git://localhost/repo.git 

git://cluster/repo.git 

、その後にそれを変更します接続のために。アプリケーションがそのポートに接続すると、sshクライアントはsshサーバ(あなたの場合はssh.server)にトンネルのリモート側への接続を開くように要求します(clusterあなたの場合はポート9418)。ローカルポートに送信されたすべてのデータは、既存のsshセッションを介してsshサーバに転送されます。 sshサーバは、データを接続先マシンに接続します。だからあなたの視点からは、ローカルマシンに接続しています。宛先の観点から、あなたはsshサーバから接続しています。

また、sshの設定が正しくないようです。その設定はクライアントにclusterという名前のマシンにsshしたいときにはlocalhostポート9418に接続する必要があることをクライアントに伝えます。与えたsshコマンドによれば、localhostポート9418はclusterのポート9418に転送されます。clusterはsshサーバーは、デフォルトのポート22ではなくポート9418で実際にリッスンしていますか?私はclusterがポート9418で実際にGitサーバーを実行していると推測しています。この場合、ssh設定を変更する必要はありません。

関連する問題