\ お問い合わせはこちら! /

【GitHub】SSHキー関連の設定方法まとめ

  • 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アカウントに登録します。

karo

拡張子は、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.
karo

これで接続の設定は完了です!

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の入り口となる操作の一つです。

ぜひこの機会にマスターしてしまいましょう。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Pythonが得意。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)