GITを使用する場合、 SSHを介したGITの使用に関する問題 があり、仕事でも自宅でも別のモデムを使用しても問題なく動作するため、明らかに動作しているのは自宅のモデムです。 HTTP経由の接続に問題はありません。
だから、私はそれがSSHの問題であると仮定していますが、私はそれを直接使用する専門家ではありません。 「テスト」接続を設定し、問題が発生するタイミングと場所を正確に知らせるコマンドを実行できますか?
fetch
(-v
で実行した場合でも)からのほとんどすべての「より大きな」コマンド(clone
、Push
、またはgit
など、大量のデータ)リモート接続の途中で「ハング」し、停止した理由が示されないため、役に立たない。
SSH接続で何が起きているかについて詳細を知る方法はありますか?
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
Ubuntu 17.04のリポジトリにあるGitバージョン2.10.0から、この構成をグローバルに、またはこの例のようにリポジトリごとに保存できます。
git config core.sshCommand "ssh -vvv"
git pull
同様の問題がありました。デバッグのために、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からの回答 を参照してください。
man git
を読み取ると、設定できる便利な環境変数GIT_TRACE_PACKET
とGIT_TRACE
があります。例えば:
GIT_TRACE_PACKET=true git clone ssh://[...]
ゲームに少し遅れましたが、うまくいけば誰かの助けになります!
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に指定した公開キーと一致することを確認します。
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に復元します。