3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(PuTTYの入った) windows 環境で GitHub を ssh で使用する場合の注意

Last updated at Posted at 2019-03-29

GitHub のプライベートリポジトリの制限が緩和され、コードを置く場所として非常に使い勝手が良くなったので、一部のコードを上げるべく準備をしたのですが。。。

ドハマリました^^;

結論

結論を先に言うと環境変数 GIT_SSH に「plink.exe」の入った環境では、接続は「plink.exe」が使用されるので、「ssh」の config 等は意味がありません。以下の 2 点のいずれかを選択してください。

参考サイト:Git for Windowsでplink(putty)を使う

puttyに接続先のホスト情報を登録する

(私はこちらを選択しました)

putty.exeから接続先を設定しておく。例えば接続先 github.com、ログイン名git、あと秘密鍵を入力し、github というセッション名で保存しておくと以下のように接続先を指定できる。

$ git clone github:te2ji/test.git

pageantに鍵を登録する

pageantを起動して秘密鍵を追加しておくと以下のようにして接続先を指定できる。

$ git clone git@github.com:te2ji/test.git

切り分けまでの手順

「git」「ssh」あたりは、適当に使っていたため、切り分けに時間がかかってしまいました。参考サイトと切り分けに必要なログを吐き出す方法をメモしておきます。

GitHub への接続

まず参照すべきは公式です。
Connecting to GitHub with SSH
本来であれば、このとおり進めればよいはずですが^^;

$ ssh -T git@github.com

までつつがなく進められます。
で、実際、git clone等を実行しようとすると

ERROR: Repository not found.
fatal: Could not read from remote repository.

正直、意味が分からなかったのですが、切り分けのためのデバッグ方法を模索します。

Git のデバッグ

10.8 Gitの内側 - 環境変数

デバッグ
Gitが何をしているか、 本当に 知りたいですか? Gitには、組み込みのトレースのほぼ完全なセットが備わっており、ユーザがする必要があるのは、それらをオンにすることだけです。 これらの環境変数に設定可能な値は次の通りです。

GIT_TRACE は、どの特定のカテゴリにも当てはまらない、一般的なトレースを制御します。 これには、エイリアスの展開や、他のサブプログラムへの処理の引き渡しなどが含まれます。

つまり環境変数を設定することで、アクセス詳細が確認できるようになると。

set GIT_TRACE=true
$ git clone git@github.com:te2ji/test.git

するとログにおかしなモノが。。。

09:08:34.502035 run-command.c:640       trace: run_command: unset GIT_DIR; 'C:\Program Files\putty\plink.exe' github 'git-upload-pack '\''te2ji/test.git'\'''

ここで初めてsshではなくplink使ってんじゃん。。。ってなるわけです。
参考までに、linux 上で該当箇所はこんな感じ。

trace: run_command: 'ssh' 'git@github.com' 'git-upload-pack '\''te2ji/test.git'\'''

で、試しに接続してみると Time Out

$ plink git@github.com
FATAL ERROR: Network error: Network error: Connection timed out

問題箇所が特定できました。
で、plink使用した「GitHub」接続方法を検討したところ、結論で紹介したサイトに辿り着きます。

設定を入れた後に接続してみます。

$ plink github
Using username "git".
Access granted. Press Return to begin session.
Server refused to allocate pty
Hi te2ji! You've successfully authenticated, but GitHub does not provide shell access.

お疲れ様でしたw

余談1

PuTTY を使い慣れていないと、鍵の登録で問題を発生させる可能性があります。
PuTTY で使用する秘密鍵は putty 形式なので、GItHub 公式の手順で作成した OpenSSH 形式の鍵を変換する必要があります。

ざっくり説明すると以下のような手順です。
PuTTYgenで OpenSSH 形式の鍵を load
・save private key で putty 形式の保存
・PuTTY で使用する鍵に putty 形式で保存したものを指定

ハマらないようにね。

余談2

原因は、環境変数 GIT_SSH がplinkを指していることなのですが、変更の経緯は追えていません。
もしかすると変更は「PuTTY」が導入されたタイミングではなく、別のタイミングで GIT_SSH は変更されたのかも。

ご存知の方がいれば指摘してください。

余談3

plinkの接続が Time Out なのに

ERROR: Repository not found.

って、おかしくない?って思ったけど、今回はコレ以上追いかけない^^;

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?