🔖

ターミナルでGithubにSSH接続する

2022/05/22に公開

https://docs.github.com/ja/authentication/connecting-to-github-with-ssh

大きな手順

1. ターミナルで鍵を作成する
2. Githubに公開鍵を登録する
3. ターミナルでGithubに接続テストを行う

この記事で登場するコマンド一覧

ssh ユーザ名@接続先
暗号化された通信を使ってリモート接続をするコマンド。
SSHの接続にはパスワード認証と公開鍵認証方式があり、パスワードの場合にはsshコマンドのみで足りる。一方、鍵方式の場合には公開鍵と秘密鍵を利用する必要があり、一覧のssh以外のコマンドは鍵作成および利用のためのコマンド。

$ ssh host02 //host02というコンピュータにログイン
$ ssh toaster@host02 //host02というコンピュータにtoasterというユーザ名でログイン
$ ssh toaster@192.168.1.1 //192.168.1.1というコンピュータにtoasterというユーザ名でログイン

//この記事で使うのは次の形でのコマンド
$ ssh -T git@github.com 

ssh-keygen
リモート(SSH)接続用の公開鍵と秘密鍵を作成するコマンド

ssh-keygen -t rsa -b 4096 -C '' //鍵のペアをRSA暗号化方式、4096ビットで生成

ssh-copy-id ユーザ名@接続先
ログイン認証のためにリモート(SSH)接続先にコピーするコマンド


ssh-add
パスフレーズ付きの鍵をssh-agentに登録することでログイン時のパスフレーズ入力を省略


pbcopy
クリップボード(ペーストボード)にコピー

1. ターミナルで鍵を作成する

鍵を作成する

%ssh-keygen -t rsa -b 4096 -C ''  // ①
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/toaster/.ssh/id_rsa): // ②   
Created directory '/Users/toaster/.ssh'.
Enter passphrase(empty for no passphrase): // ③
Enter same passphrase again: // ④
Your identification has been saved in /Users/toaster/.ssh/id_rsa. //  ⑤
Your public key has been saved in /Users/toaster/.ssh/id_rsa.pub. // ⑥
The key finger print is: //⑦

手順

1. 鍵のペアをRSA暗号化方式、4096ビットで生成

%ssh-keygen -t rsa -b 4096 -C ''  //''はコメント記入欄
  1. 秘密鍵の保存先とファイル名を確認するだけの項目
  2. パスフレーズの入力(なし, あとから変更も可能)
  3. パスフレーズ確認のため再入力
  4. 秘密鍵の保存場所
  5. 公開鍵の保存場所(.pub 末尾)
  6. randomartと呼ばれる公開鍵の視覚化表現

2. Githubに公開鍵を登録する

GithubからSSH and GPG Keysを選択


SSH KeysよりNew SSH Keyを選択

このKeyに公開鍵を登録することでSSH接続のための設定がなされます。
公開鍵自体は手順1で作られているので、この鍵をコピーして貼り付けられるようにします。公開鍵の載っているファイルはid_rsa.pub.ですが、これはテキストファイルであるため、直接ファイルを開いてコピーすること自体は可能です。ただ、ターミナルでコマンドを利用して作成しているので、ターミナルで操作できるようにしておくのが便利です。

利用するコマンドはpbcopyです。pbはペーストボードで、いわゆるクリップボードの別の表現です。

% pbcopy < ~/.ssh/id_rsa.pub

末尾.pubの公開鍵ファイルをリダイレクトで繋いで、pbcopyコマンドでコピーします。
これを上記のGithub上の入力欄にペーストすることで、ひとまず必要なSSH接続の設定は終了です。

ターミナルでSSH接続のテストを行う

実際に接続のテストをしてみます。

接続のためのコマンドはドキュメントに記載されています。
https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection

% ssh -T git@github.com  

このコマンドがGithubにSSH接続するテストのためのコマンドとなります。

実行した際に次のような表示が出てくる場合があるとドキュメントには書かれています。

The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

別の表記でしたが、私も表示されました。表示されているfingerprintがGitHub's public key fingerprintと一致していればyesで先に進みます。
https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints

結果的にこのような表示がなされたらSSH接続のテストが成功したことになります。

Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi toaster08! You've successfully authenticated, but GitHub does not provide shell access.

まとめ

1. ターミナルで鍵を作成する
2. Githubに公開鍵を登録する
3. ターミナルでGithubに接続テストを行う

Githubへの接続だけであれば、とくに問題になるような部分があるわけではないので、順を追っていけばテストまではこぎつけるように思いました。基本情報などは公開鍵、秘密鍵に関する仕組みへの理解が求められるので、その辺りも今後は拾っていきたいと思います。

用語の整理

SSH: Secure Shell 
sshd: SSHサーバ
public key: 公開鍵
private key: 秘密鍵
fingerprint: 公開鍵の指紋
randomart: 公開鍵の視覚化

参考

西村 めぐみ.
[新版 zsh&bash対応]macOS×コマンド入門 ──ターミナルとコマンドライン、基本の力」
(WEB+DB PRESS plus)

https://qiita.com/shizuma/items/2b2f873a0034839e47ce

Discussion