こんにちは、現役エンジニアの inno_tech です。
GitHubでSSH接続の設定方法をお探しでしょうか?
今回は、Ubuntu20.04LTSを使ってGitHubにSSH接続するまでの手順を説明します。
Githubではhttpsでの接続もできますが、パスワード認証が廃止となり、Personal Access Token(PAT)の発行が必要になります。
一方、SSHの認証はsshキーを登録したデバイスから自動認証で接続できるので、頻繁にGitHubを使用する方はSSH接続がおすすめです。
SSH接続までのステップは3stepです。それでは説明をご覧ください。
本記事は ubuntu20.04LTSの環境で検証しています。
step1. SSHキーの作成
まずは ssh-keygen コマンドを使ってsshキーを作成します。
-tオプションで暗号化のアルゴリズムを指定しますが、現時点では、 Ed25519方式のアルゴリズムで鍵を生成することが推奨です。(GitHub公式ドキュメントより)
SSHプロトコルを使用するために、OpenSSHというSSH接続用ツールをインストールし、その後 SSHキーを作成していきます。
# OpenSSH serverのインストール
sudo apt-get install openssh-server
# OpenSSHのバージョンを確認
ssh -V
# ver6.5以上であれば Ed25519方式のアルゴリズムに対応したキーを作成
# -f: ファイル名
# -C: コメント
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "your_email@example.com"
## 下記が表示されたらパスワードを入力
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
# 下記が表示されたら、もう一度同じパスワードを入力
Enter same passphrase again:
# 秘密鍵 id_ed25519, 公開鍵 id_ed25519.pub の2ファイルが生成される
Your identification has been saved in /home/[username]/.ssh/id_ed25519
Your public key has been saved in /home/[username]/.ssh/id_ed25519 .pub
The key fingerprint is:
SHA256:・・・
古いOpenSSHバージョンの場合は、Ed25519方式に対応していないため、RSAという方式で生成します。
# 古いバージョンのOpenSSHの場合、RSA方式のアルゴリズムに対応したキーを作成
ssh-keygen -t rsa -b 4096 -f ./my_ssh_key -C "your_email@example.com"
ここまでで秘密鍵(id_ed25519)と公開鍵(id_ed25519.pub)の2つのファイルが生成されました。
秘密鍵 は暗号化通信を復号するためのファイルで、他人に渡したりしてはいけません。
使用者以外に流出すると、悪意ある第三者に通信が解読される可能性があります。
なお、公開鍵 は暗号化時のみ使用するファイルで、他人に知られても問題ありません。
step2. SSHキー(秘密鍵)をssh-agentに登録
ssh-agent(今回の場合、OpenSSH)に対し、秘密鍵ファイルを登録します。
# 先ほど作成した秘密鍵ファイル を登録
ssh-add ~/.ssh/id_ed25519
# パスワードを聞かれるので、sshキー作成時のパスワードを入力
Enter passphrase for /home/[username]/.ssh/id_ed25519:
# Identity added と表示されればOK
Identity added: /home/[username]/.ssh/id_ed25519
# 登録された鍵(finger print)を確認するコマンド
ssh-add -l
以上でPC側の設定は完了です。
step3. GitHubにSSHキー(公開鍵)を登録
続いて、GitHub(リモート接続先)にSSHキーの公開鍵を登録します。
GitHubにログイン後、右上のアカウントマークをクリックし「Settings」を開きます。
「SSH and GPG keys」のメニューから、「New SSH Key」をクリックします。
登録する公開鍵の中身を確認するため、一旦ターミナルに戻ります。
catコマンドで 公開鍵(.pub)の内容を表示し、その文字列全文をクリップボードにコピーします。(秘密鍵ではないので注意)
# 先ほど作成した公開鍵ファイル を表示
cat ~/.ssh/id_ed25519.pub
# 表示される長い文字列をコピー(ssh-ed25519~末尾まですべて)
ssh-ed25519 AXXXX・・・・
GitHubの画面に戻り、下記のように公開鍵を設定してAdd SSH Key を押下します。
- Name: 登録する鍵の名前です。自由に設定して構いません。
- Key: 確認した公開鍵の文字列データを貼り付けます。
正常に登録できれば、公開鍵の一覧に登録したSSHキーが追加されるはずです。
以上でGitHub側の設定は完了です。次にテスト接続してみます。
SSH接続テスト
SSH接続の準備ができたら、早速GitHubに接続してみましょう。
SSH接続用URLの確認
リポジトリの画面にCodeボタンがあるのでクリックすると、クローン用URLが表示されます。
SSHタブをクリックし、そのURLをコピーしましょう。
テスト接続
早速テスト接続してみましょう。正しいペアの秘密鍵・公開鍵が登録できていれば、接続できるはずです。
なお、初回接続時のみ Are you sure you want to continue connecting (yes/no/[fingerprint])?
と表示されます。この場合「yes」と入力してください。
2回目以降は、~/.ssh/known_hostsファイルに接続済みホストとして登録されるので上記メッセージが表示されなくなります。
# 試しにclone
git clone [リポジトリurl]
# 初回接続時は、下記のようなメッセージが表示される
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxx.
# 接続してよいかを確認されるため、yes を押下する
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,xx.xx.xx.xx' (ECDSA) to the list of known hosts.
...
# ~/.ssh/known_hosts に接続経験のあるホストとして公開鍵情報が登録される
# 下記コマンドで確認可能
cat ~/.ssh/known_hosts
すでにClone済みのリポジトリがある場合
なお、https接続でClone済みリポジトリがある場合、リモートリポジトリのURLをssh接続用に変更する必要があります。
こちらの記事にやり方をまとめたのでご覧ください。
最後に
今回はSSH接続の設定方法を説明しました。
SSH接続ではペアとなる鍵を用意し、PC(秘密鍵)とリモート接続先(公開鍵)の両方でそれぞれ鍵を持つことで、暗号化された通信を実現します。
このあたりの暗号化通信に関する知識は国家資格である「情報処理安全確保支援士」の中で学習できますよ。
話は変わりますが、プログラミングを習得したい, 仲間が欲しい人は、プログラミングスクールに通うのがおすすめです。
自己学習でかかるコストを考えると十分元が取れると思います。
少しでも興味があれば、まずは無料のオリエンテーションを受講し、自分に合うか試してみるのがよいでしょう。
まずは一歩行動して、将来の自分に楽をさせてあげましょう。
参考になったでしょうか。
ほかにも役立つ情報が他のページにもあるかもしれません。
ご覧いただいても、ご覧いただかなくてもどちらでもどうぞ!
この記事がイイねと思ったら、Twitterフォロー か にほんブログ村のどちらかしてくれたら嬉しいよ!
コメント / ご要望