結論
- 原因: 使うネットワークが変わった
- 対策: ssh諦めてhttpsで接続した
事象
- githubにssh接続しようとしたが、timeoutエラーとなり接続できなくなった
前提
- 前日まではssh接続できていた
- ssh keyまわりは触ってない
-
作業場所が変わった
- 作業場所の変更、つまり使うネットワークが変わったことが今回の問題の原因だった
調査
ログ確認
ssh -vvv git@github
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/hogehoge/.ssh/config
debug1: /Users/hogehoge/.ssh/config line 15: Applying options for github
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug1: Connecting to github.com port 22.
ssh: connect to host github.com port 22: Operation timed out
timeout以外の情報得られず
情報収集
どうやら443番ポートを使ってssh接続する手段もあるらしい
GitHub Enterprise Server users: Accessing GitHub Enterprise Server via SSH over the HTTPS port is currently not supported.
と記載あり、Enterprise Server userに当てはまらなかったが、
kex_exchange_identification: banner line contains invalid characters
のエラーになり上手くいかず
(こちら解決すればsshのままでもいけた可能性あり)
ポート開放確認
そもそも使用中のWi-Fiでport22が使えるか確認
下記のサイトから確認できる
Error: I could not see your service on 103.5.140.187 on port (22)
と出れば、使えない
(他にはnetstat
コマンドなど用いて確認する方法もありそう)
対処方法
sshでの接続を諦めて、httpsで接続した
Settings
> Developer settings
> Personal access tokens
からGenerate new token
アクセス権限は適宜付与してトークン作成
(今回は、Repoのみ全て許可)
一度しか表示されないので、忘れずにコピーしておく
remote-urlを変更
$ git remote set-url origin https://github.com/hogehoge/fugafuga.git
適当にfetchコマンド打つと認証情報聞かれるので、githubのユーザー名と、先ほど作成したトークンを入力
$ git fetch
Username for 'https://github.com': hogehoge
Password for 'https://hogehoge@github.com':
ssh使える状況になったら戻すこと
sshが使える状況になったら、httpsからsshに変更したほうが良いので
$ git remote set-url origin git@github:[リモートリポジトリ名].git
configファイルのHostName
に合わせてgithub
部分は適宜読み替え