- GitHubのSSHキー操作が苦手…
- 基本的な操作の流れが知りたい
- 運用中に必要な知識も併せて教えて
このような疑問にお答えします。
開発になくてはならないGitHubですが、その最初の関門がSSH接続です。
一度設定を済ませてしまえば後は気にする必要もないですが、最初のSSH接続設定でつまずく方は意外と多いのではと思います。
かくいう僕も、以前は苦手な分野でした。
なぜならSSH設定は最初だけやれば良いので、どうしても繰り返し触れることがありません。なかなか「慣れる」ということがないです。
本記事では、GitHubにSSH接続するための手順とその解説を網羅しました。
ぜひ参考にしてみてください。
【GitHub】SSHキー関連の操作まとめ
SSHキーの生成からGitHubへのSSH接続までの操作方法をまとめました。
できれば手を動かしつつ、ここで基本的な操作の流れを覚えていきましょう。
SSHキーの生成
ローカルマシンのターミナルで、以下のコマンドを実行します。
ssh-keygen -t ed25519 -C "あなたのメールアドレス"
すると、キーの保存場所を聞かれます。
ssh-keygen -t ed25519 -C "yourmailaddress@sample.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519):
鍵のファイル名を指定しない場合には、何も入力しないでEnterキーを押します。
そうすると.ssh
ディレクトリ配下に公開鍵と秘密鍵の二つの鍵が生成されます。
もしgithub
という名前のキーペアを作りたいなら、次のように入力してEnterキーを押しましょう。
ssh-keygen -t ed25519 -C "yourmailaddress@sample.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519): /Users/username/.ssh/github
続いてパスフレーズの入力を求められます。
ssh-keygen -t ed25519 -C "yourmailaddress@sample.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
パスフレーズはセキュリティを高めるためのパスワードです。
不要であれば何も入力せずに、空のままEnterを押してしまいましょう。
最後にls
コマンドを実行して、キーが作成されたかを確認します。
% ls -la ~/.ssh
-rw------- 1 **** staff 411 9 21 21:12 id_ed25519
-rw-r--r-- 1 **** staff 102 9 21 21:12 id_ed25519.pub
id_ed25519
は秘密鍵です。
この鍵は自分だけが持つ鍵なので、他の人に渡してはいけません。
一方のid_ed25519.pub
は公開鍵になります。
公開鍵は外部にばら撒くための鍵になるので、この後のステップでGitHubアカウントに登録します。
拡張子は、public(公開)と覚えておくと間違えないです。
公開鍵をGitHubに追加する
先ほど生成した公開鍵の内容を、クリップボードにコピーします。
pbcopy < ~/.ssh/id_ed25519.pub
コピーした内容をGitHubに登録しましょう。
さっそくGitHubのウェブサイトにログインして、Settingsをクリックします。
続いてSSH and GPG keys
を選択。
緑色のNew SSH key
ボタンをクリックします。
以下のSSHキーを登録するフォームが表示されます。
Titleには今回登録する鍵に名前をつけます。
他の鍵と区別がつけば良いので、分かればなんでもOKです。
Keyのところに先ほどクリップボードにコピーした公開鍵を貼り付けましょう。
最後にAdd SSH key
ボタンを押せば、GitHub側での操作は完了です。
ローカルマシンでconfigファイルに鍵を登録
ここからはローカルマシン側の手続きです。
以下のコマンドを実行して、configファイルを編集しにいきます。
vi ~/.ssh/config
ファイルの中身は以下のように書き込みましょう。
Host github
HostName github.com
User ****** # ご自身のGitHubアカウントのユーザー名に置き換える
IdentityFile ~/.ssh/id_ed25519 # 秘密鍵のパスを入力
IdentitiesOnly yes
Port 22
ServerAliveInterval 60
項目について、少し補足します。
- Host
接続に対して便宜的に名前をつけます。 - HostName
接続先サーバーのホスト名を指定します。 - User
GitHubアカウントのユーザー名を指定します。 - IdentityFile
秘密鍵のパスを指定します。 - IdentitiesOnly
今回の秘密鍵のみを認証に使います。 - Port
SSH接続に使うポートを指定します。 - ServerAliveInterval
接続が切れにくくなる設定です。
入力が終わったら上書き保存します。ESC
キーを押してから次のコマンドを押して、Enterキーを押しましょう。
:wq
最後に以下のコマンドを実行して、GitHubに正常に接続できるかテストをします。
ssh -T git@github.com
次のメッセージが返ってくれば成功です。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
これで接続の設定は完了です!
GitHubでSSH接続する際の+αの知識
普段からGitHubを触っていて感じる疑問をまとめました。
同じような事象でお悩みの場合には参考にしてみてください。
SSHキーのパスフレーズを変更したい
次のコマンドでパスフレーズの変更ができます。
ssh-keygen -p -f ~/.ssh/targetkey
コマンドを実行すると現在のキーを聞かれます。
.ssh % ssh-keygen -p -f ~/.ssh/github
Enter old passphrase:
古いパスフレーズを入力してEnterを押すと、新しいパスフレーズが求められます。
.ssh % ssh-keygen -p -f ~/.ssh/github
Enter old passphrase:
Key has comment '*******@gmail.com'
Enter new passphrase (empty for no passphrase):
もう一度パスフレーズを入力するよう言われるので、同じものを入力しましょう。
.ssh % ssh-keygen -p -f ~/.ssh/github
Enter old passphrase:
Key has comment '*******@gmail.com'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
パスフレーズの変更に成功すると、上のようなメッセージが表示されます。
複数のSSHキーを管理するためのベストプラクティス
SSHキーの生成するときには、わかりやすいファイル名をつけます。
例えば以下のようにサービス名ごとに命名していくと、後でごちゃごちゃにならず便利です。
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github_key
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/work_server_key
また、SSH設定ファイル(~/.ssh/config
)については、ホストごとに異なるSSHキーを設定するよう指定すると良いです。
Host github
HostName github.com
User git
IdentityFile ~/.ssh/github_key
Host workserver
HostName work.example.com
User your_username
IdentityFile ~/.ssh/work_server_key
まとめ
これまでGitHubで行う一般的なSSH接続の手順をまとめてきました。
少しとっつきにくい印象を持たれている方もいらっしゃるかもですが、一つ一つ順を追っていけばそこまで難しいものでもありません。
SSH接続はGitHubの入り口となる操作の一つです。
ぜひこの機会にマスターしてしまいましょう。
コメント