1

中国ではSSHアクセスgithubがブロックされているため、このチュートリアルに従ってsshトンネルを設定しました。

$ plink -N myuser@myhomessh.com -pw mypassword -L 9418:github.com:9418
$ git clone git://localhost/someuser/someproject.git

URLgithub経由でコードをプッシュできません。 だから私はこれを試してみます:Git Read-Only

$ git clone git@localhost:someuser/someproject.git
Cloning into 'someproject'...
git@localhost's password: 

ここは何かがおかしい。に追加~/.ssh/id_rsa.pubしましたgithub

4

2 に答える 2

2

SSHトンネルを使用して、ポート9418へのトンネルを作成します。認証されていない読み取り専用アクセスのみを許可する単純なgitサーバーが実行されます。そこにプッシュすることはできません。最初の例では、プロトコルを使用していることに注意してください。git://これは、ポート9418に接続し、そのプロトコルを使用していることを示しています。

2番目の例では、git over SSHを使用して、ポート22で接続を作成しようとしています。次のような方法でSSHトンネルを作成できます(ローカルで実行されているSSHサーバーがあり、ポート22をローカルでリッスンしていると仮定します)。 )。

plink -N myuser@myhomessh.com -pw mypassword -L 2222:github.com:22
git clone ssh://git@localhost:2222/someuser/someproject.git
于 2012-05-23T10:41:13.980 に答える
0

このコマンドは、SSH(ポート22)を使用git clone git@localhost:someuser/someproject.gitして接続しようとします。localhostなぜそれが資格情報を要求しているのか(何かがこのポートでリッスンしているように)はわかりません。

私には、その頭の痛い制限を克服する唯一の賢明な方法は、アクセスがブロックされていない(つまり、中国国外の)IPサブネットにSSHジャンプホストを設定することだと思われます。

また、他の(緩和的な)解決策があるかもしれません:

  • 独自のコードをホストする必要がある場合は、アクセスできない可能性のある他のGitホスティングプロバイダーがブロックされている可能性があるため、githubを使用しないでください。
  • 自分が所有していないプロジェクトにプッシュする必要がある場合は、コードを提供する次善の方法に頼ることができます。パッチシリーズまたはgit bundle変更セットをメンテナまたはコードの取得を後援する別の人に郵送します。

更新:まあ、私はあなたの答えを読み直しました、そしてあなたは本当にローカルホスト上で実行されているある種のSSHサーバーを持っているようです。したがって、明確にするために、githubでの認証に使用されるSSHキーは、ローカルのSSHサーバーではなく、githubのSSHサーバーと通信するときにクライアントによって使用されます。つまり、プロトコルを使用してgithubからリポジトリのクローンを作成するためgit://に、トンネルを設定する必要はまったくありませんでした。また、SSH経由でgithubにアクセスするには、常にSSH経由でgithubに接続する必要がありますが、これはブロックされています。githubにSSH接続を受け入れるための別のポート(22ではない)があれば素晴らしいと思います。しかし、私は彼らがこのようなものを利用できるかどうかわかりません。

于 2012-05-23T08:10:53.183 に答える