Issue
タイトル通り、SSHでGitlabへアクセスしようとしたら以下のようなTimeoutがでてアクセスできない。
ssh -vvv git@gitlab.com
OpenSSH_9.0p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/{user_name}/.ssh/config
debug1: /Users/{user_name}/.ssh/config line 6: Applying options for gitlab.com
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/Users/{user_name}/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/Users/{user_name}/.ssh/known_hosts2'
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to gitlab.com port 20.
ssh: connect to host gitlab.com port 20: Operation timed out
Investigation
上記の結果からもOpenSSHやLibreSSLのバージョンも確認してみたが古いわけでもない。
ということで使用しているconfigファイルを確認してみる。
しかし、gitlabの設定方法を見ても特段まずい設定をしているわけでもない。
gitlab.comへのpingも通るけど通らないってことはネットワーク的にFirewallでブロックされているのではないかと困ったので公式ページのEngineerブログをあさってみる。
Host gitlab.com
HostName gitlab.com
User git
Port 22
PreferredAuthentications publickey
IdentityFile /Users/{user_name}/.ssh/id_rsa
Solution
GitLab.com now supports an alternate git+ssh port が解決してくれた。
ネットワークが監視されていて22番ポートでは接続ができない場合があるとのこと。
そんなときに解決する方法としてGitlabが提供している2番目のSSHサーバーを使うという方法だ。
変更点はPort番号とHostname。
ssh -i /Users/{user_name}/.ssh/id_rsa -p 443 git@altssh.gitlab.com
PTY allocation request failed on channel 0
Welcome to GitLab, {git_user_name}!
Connection to altssh.gitlab.com closed.
接続できた。ただし毎回上記のように設定するのはめんどくさいのでconfigファイルを以下のように変更する。
Host gitlab.com
HostName altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile /Users/{user_name}/.ssh/id_rsa
これで再度接続してみる。
ssh git@gitlab.com
PTY allocation request failed on channel 0
Welcome to GitLab, @{git_user_name}!
Connection to altssh.gitlab.com closed.
アクセスできた。git pullもcloneもできたので一件落着。
ただし、よく公式ページを見れば書いてあった。。。。
僕みたいな残念な人間が他に出ないことを願います。。。lol
alternative-ssh-port