とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

GitHubへのSSHアクセス

GitHubでSSHを使ってソースのクローンやコミット、マージなどを実行したい場合、以前はGitHubにSSHの公開鍵を登録して次のように設定して最後にssh -T git@github.comとか実行したと思います。「GitHub ssh接続」などで検索すると同じような設定を行なっているブログ記事がたくさん見つかります。

$ ssh-keygen
...
$ vi ~/.ssh/config

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa.pub

本来であれば Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.みたいなメッセージが出力されていたはずなのですが、いくら待ってもそういったメッセージは出ずに、最終的にはSSH接続がタイムアウトになってしまいます。

-vオプションをつけて実行すると、22番ポートにアクセスしようとして止まっているような感じでした。いつの間にか22番ポートはブロックするようにしたのでしょうか?

% ssh -v -T git@github.com
OpenSSH_9.0p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/ytooyama/.ssh/config
debug1: /Users/ytooyama/.ssh/config line 15: Applying options for *
debug1: /Users/ytooyama/.ssh/config line 74: Applying options for github.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 *
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to github.com port 22.

これについて調べたところ、次のようなフォーラムの投稿がヒットしました。

stackoverflow.com

環境固有でgithub.comにSSH接続ができなくなる場合があるようです。もしかすると今回の問題もそれなのかもしれません。

GitHub公式の情報 をみて、~/.ssh/configを書き換えることにしました。

Host github.com
  Hostname ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_rsa.pub

設定を書き換えたところ、今度はうまくいきました。

% ssh -T git@github.com
Hi ytooyama! You've successfully authenticated, but GitHub does not provide shell access.

ソースのクローンとかも問題ないです。

% git clone git@github.com:ytooyama/wasm-python-demo.git
Cloning into 'wasm-python-demo'...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 1), reused 6 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
Resolving deltas: 100% (1/1), done.

GitHub CLI を入れると、公開鍵をコマンドでGitHubに登録できるので便利です。 また GitHub Mobile をタブレットやスマホに入れておくと、ユーザーの2FA認証をGitHub Mobileで応答できるので、これも便利ですね。

gh ssh-key add ~/.ssh/id_ed25519.pub