web-dev-qa-db-ja.com

SSH経由でGit接続をテストするための本当に冗長な方法ですか?

GITを使用する場合、 SSHを介したGITの使用に関する問題 があり、仕事でも自宅でも別のモデムを使用しても問題なく動作するため、明らかに動作しているのは自宅のモデムです。 HTTP経由の接続に問題はありません。

だから、私はそれがSSHの問題であると仮定していますが、私はそれを直接使用する専門家ではありません。 「テスト」接続を設定し、問題が発生するタイミングと場所を正確に知らせるコマンドを実行できますか?

fetch-vで実行した場合でも)からのほとんどすべての「より大きな」コマンド(clonePush、またはgitなど、大量のデータ)リモート接続の途中で「ハング」し、停止した理由が示されないため、役に立たない。

SSH接続で何が起きているかについて詳細を知る方法はありますか?

104
IQAndreas

環境変数

Gitバージョン2.3.0から、環境変数GIT_SSH_COMMANDを使用して、次のように-v冗長引数を渡すことができます。

GIT_SSH_COMMAND="ssh -v" git clone example

さらに冗長にするには、-vvvにします:

GIT_SSH_COMMAND="ssh -vvv" git clone example

Git構成

Ubuntu 17.04のリポジトリにあるGitバージョン2.10.0から、この構成をグローバルに、またはこの例のようにリポジトリごとに保存できます。

git config core.sshCommand "ssh -vvv"
git pull
110
Flimm

同様の問題がありました。デバッグのために、ssh_configに行を追加しました。ここに私がそれをやった方法があります:

git remote -v

そこには次のような行があります。

Origin  [email protected]:me/test.git (fetch)
Origin  [email protected]:me/test.git (Push)

この場合、ホストはgithub.comです。これで、ssh configにホストエントリを追加できます。

vim ~/.ssh/config

そして追加:

Host github.com
    LogLevel DEBUG3

Git操作を使用すると、すぐに多くのデバッグメッセージが表示されます。デバッグメッセージを少なくするには、DEBUG1を使用してみてください

GITバージョン> = 2.3.0については、よりスマートなソリューションについて @ Flimmからの回答 を参照してください。

81
Trendfischer

man gitを読み取ると、設定できる便利な環境変数GIT_TRACE_PACKETGIT_TRACEがあります。例えば:

GIT_TRACE_PACKET=true git clone ssh://[...]

ゲームに少し遅れましたが、うまくいけば誰かの助けになります!

14
bcherny

man sshごと:

 -v      Verbose mode.  Causes ssh to print debugging messages about its progress.  This
         is helpful in debugging connection, authentication, and configuration problems.
         Multiple -v options increase the verbosity.  The maximum is 3.

したがって、ssh -vを試してください。知っておくべきことがわからない場合は、1つまたは2つのvを追加して、さらに詳細なデバッグ情報を取得できます。特にGithubの場合は、ssh -vvvT [email protected]を試してください。

通常、私の経験では、クライアントが選択した認証方法を完了できない場合、セットアップ中にSSHセッションがハングします。秘密キーが適切な権限を持つ適切な場所にあり、Githubに指定した公開キーと一致することを確認します。

5
tgies

Git(1)にssh(1)に使用する外部コマンドを指示する方法はありませんが、回避策として、単に/ path/to/sshの名前を/path/to/ssh.origに変更し、シェルを作成しますスクリプトラッパー/ path/to/ssh、および-vフラグを追加します。

$ Sudo mv /usr/bin/ssh /usr/bin/ssh.orig
$ Sudo vim /usr/bin/ssh
$ cat /usr/bin/ssh
#!/bin/sh

if [ -x /usr/bin/ssh.orig ]; then
    exec /usr/bin/ssh.orig -v -v -v "${@}"
fi

$ Sudo chmod a+x /usr/bin/ssh

Sshトランスポート上で動作するgitコマンドを実行すると、詳細な出力が表示されます。デバッグが完了したら、スクリプトを削除し、/ path/to/ssh.origを/ path/to/sshに復元します。

3
ScoobiFreeBSD