6

次のようなパスを使用してプルするGitリポジトリがあります。

git pull ssh://username@host.com:1234/path/to/repository.git

次に、GitExtensionsがplinkを使用してリポジトリからプルしようとすると、次の呼び出しが行われます。

plink -T username@host.com:/path/to/repository.git

これは、実際には#1234ではなくポート#22にpingを実行しているため、失敗することになります。

行うべき正しい呼び出しは

plink -T -P 1234 username@host.com:/path/to/repository.git

〜/ .ssh / configにエイリアス「hostCom」を作成した場合、これを行うだけで正しく機能するように見えます(#1234に接続)。

plink -T username@hostCom

しかし、Gitリポジトリへのパスも追加するとすぐに、再び#22に移動します。

私が試したもう1つのオプションは、PuTTYでセッションを作成することです。それを「hostPutty」と呼び、そこにデフォルトのポートを設定するなどします。ただし、最終的には同じになります。Gitリポジトリへのパスをカスタムポートと組み合わせることはできません。

すべてのパーツを組み合わせて機能させるにはどうすればよいですか?

そして、なぜOpenSSHは問題に対処できるのに、PuTTYは対処できないのでしょうか。OpenSSHの唯一の問題は、接続を試みるたびに秘密鍵のパスワードを要求され続けることです(そして、パスワードなしで秘密鍵を作成したくありません)。

4

2 に答える 2

11

私はそれを理解しました。

これが私を間違った道に導いたものです:

  • ここで概説されているように、PuTTYでセッションを作成しないでください
  • ファイル〜/ .ssh/configで定義した可能性のあるホストエイリアスを使用しないでください

動作させる方法は次のとおりです。

  • 明らかに、GitExtensionsがOpenSSHではなくPuTTYを使用するように設定されていることを確認してください
  • plink.exe(GitExtensionsで使用できるもの、またはPuTTYで特別にインストールされたもの)がスペースのないパスにあることを確認してください
  • 環境変数%GIT_SSH%plink.exe(デフォルトではssh.exeを指す場合があります)を指すように設定し、値が「現状のまま」使用されるため、アポストロフィがないことを確認します(そのため、次のことができます)。 t上記のようにスペースを使用します)
echo %GIT_SSH%

C:\tools\PuTTY\plink.exe
  • 上記の例では、ポートなどを指定できないホストエイリアスを使用せずに、「full」コマンドを使用してプルします。ポートが欠落していて、コロンしかない場合、Gitはそれをパス区切り文字として扱い、sshをポート区切り文字として扱います(したがって、それぞれがかなりひどく噛み付きます)。

    git clone ssh://username@host.com:1234 / path / to / repository.git

そうすれば、Gitとplinkは実際に物事を正しく理解します!

このようにしないと、次のようなあらゆる種類の問題が発生する可能性があります。

  • %GIT_SSH%がssh.exeポイントし、パスを含む代わりにホストエイリアスを使用しました。ポート

ssh.exe ":hostPutty:path:名前に関連付けられたアドレスがありません
致命的:リモートエンドが予期せずハングアップしました

  • %GIT_SSH%で使用されたアポストロフィ

エラー:「C:\ tools \ PuTTY \ plink.exe」を生成できません:そのようなファイルまたはディレクトリはありません
致命的:フォークできません

于 2012-09-06T18:45:04.893 に答える
1

私の場合、ホスト名が存在しないというエラーが発生し続けました。このスレッドや他のスレッドでたくさんの提案を試した後、リモートURLを確認しましたが、それが原因でした。PuTTYを使用している場合は、 https://githubではなくgit@github.comで始まることを確認してください。

Git拡張機能でこれを確認する方法の例を次に示します

于 2015-11-25T23:43:39.477 に答える