
SSHキーをGithubにリンクすることは、アカウントを保護する際の重要なステップの一つです。公開鍵暗号の力を利用して Git リポジトリを保護することができます。この記事では、SSH 鍵とは何か、そしてそれを使って Github アカウントを強化する方法を紹介します。
注:Git初心者ですか?まずは入門ガイドから学びましょう。
SSHキーとは?
gist では、SSH 鍵とはリモートサーバーに保存する公開鍵のことです。これは認証プロキシとして機能し、ユーザー名やパスワードを入力せずにマシンに接続したり、やり取りしたりすることができます。

その仕組みは、SSHでマシンに接続するたびに、ローカルコンピュータがあなたのSSH秘密鍵で署名されたメッセージを送信します。するとリモートマシンは、あなたの公開SSH鍵を使ってメッセージの信憑性を確認し、あなたをログインさせる。
Githubは、サーバー内であなたの身元を確認するために同じアプローチを使用しています。Githubは、あなたがリポジトリをアップロードしたり変更したりするたびに、あなたの公開鍵を使用します。これにより、コミットをプッシュする際にGithubの認証情報が公開されることはありません。知っておいて損はありません: LinuxにGNU Kleopatraをインストールすることで、公開鍵暗号と、それがどのようにあなたのオンラインIDを保護できるかについて、より詳しく知ることができます。
Github用のSSHキーを生成する
始めるには、あなたのディストロのアプリケーションランチャーを使って新しいターミナルセッションを開きます。
マシンにOpenSSHがインストールされ、SSHエージェントデーモンが実行されていることを確認してください:sudo apt install ssheval `ssh-agent -s`.
以下のコマンドを実行して、SSH鍵生成ウィザードを開始します:
ssh-keygen -ted25519-C "[email protected]"
ssh-keygen-t-ed25519-C""ウィザードは、鍵にカスタムのSSH鍵ファイル名を使用するかどうかを尋ねてきます。Enterキーを押して、デフォルトの名前と場所を受け入れます。

新しいSSH鍵のパスワードを入力する。これはローカルマシンが Github アカウントに接続する際のパスフレーズとなります。

注:パスワードなしのSSHキーを作成したい場合は、パスワードプロンプトを空白のままにすることもできます。
新しく生成したSSHキーを、現在実行中のSSHエージェントに追加します:ssh-add ~/.ssh/id_ed25519
知っておくと良いこと: Githubに慣れていない方は、Githubリポジトリに追加すべきベストアプリをいくつか見つけてください。
GithubにSSHキーを追加する
新しいSSHキーを立ち上げて実行することで、ローカルマシンをGithubアカウントにリンクできるようになります。手始めに、以下のコマンドを実行してSSH公開鍵を印刷します:
cat ~/.ssh/id_ed25519.pub
SSH公開鍵をハイライトして右クリックし、"コピー "を選択します。

新しいブラウザセッションを開き、Githubのホームページに移動します。
ページ右上のプロフィールアイコンをクリックします。
ドロップダウンリストから "設定 "をクリックします。

設定ページの左サイドバーにある "SSHとGPGキー "を選択します。

SSH Keys "ヘッダーの横にある "New SSH Key "ボタンをクリックします。

Title "テキストボックスを選択し、鍵の名前を入力します。
Key "テキストボックスをクリックし、Ctrl+Vキーを押してSSHキーを貼り付けます。
Add SSH Key "をクリックして、新しい設定をコミットします。
新しいターミナル・セッションを開き、以下のコマンドを実行する:
ssh -T [email protected]
yes "と入力し、Enterキーを押します。

そうすることで、Githubの受信サーバーへの新しいSSHセッションが開始されます。鍵が正しく動作していれば、SSH接続を確認する短いメッセージが表示されます。

SSHキーの管理
たいていのユーザーには SSH 鍵がひとつあれば十分ですが、複数のマシンにまたがる Git リポジトリを同期させる必要がある場合もあるでしょう。そのためには、マシン固有の SSH 鍵をインポートする必要があります。
Githubにリンクしたいコンピューターで、新しいターミナルセッションを開きます。 OpenSSHデーモンがシステムにインストールされ、実行されていることを確認する:sudo apt install ssheval `ssh-agent -s`.
以下のコマンドを実行して、新しいマシンのSSHキーを作成する:
ssh-keygen -ted25519-f ~/.ssh/id-ed25519-pc2 -C "[email protected]"
新しい SSH 鍵に安全なパスフレーズを入力し、Enter キーを押します。
新しい代替鍵をSSHエージェントに追加します:ssh-add ~/.ssh/id-ed25519-pc2
SSH 公開鍵の内容を印刷し、システムのクリップボードにコピーします:
cat ~/.ssh/id-ed-25519-pc2
Githubアカウントの "SSH and GPG Keys "ページに戻る。
もう一度 "New SSH Key "ボタンをクリックします。 新しい鍵にユニークなラベルを付け、"Key" テキストボックスの下にクリップボードの内容を貼り付けます。
Add SSH Key "をクリックして、新しい設定を適用する。
新しいマシンがあなたのセキュアキーを使ってGithubに接続するかどうか、SSHでログインしてテストしてみましょう:ssh -T [email protected]
既存のSSHキーの変更
新しく生成した鍵をGithubに送信する以外に、すでにマシン内にある既存のSSH鍵を変更することもできます。これは、Linuxでパスワード不要のログインとしてすでにSSHキーを使っている場合に便利だ。
既存のキーを変更するには、マシンの「.ssh」ディレクトリに移動する:cd ~/.ssh
ssh-keygenに
-p
、-o
、-f
フラグを付けて、SSH鍵とともに実行する。これにより、既存の秘密鍵のパスワードを変更できるようになります:
ssh-keygen -p -o -f./id-ed25519
注意:これらのフラグを使って、通常の SSH 鍵をパスワードなしのものに変換することもできます。
また、-c
フラグを使用することで、公開鍵に埋め込まれた電子メールアドレスを変更することもできます:
ssh-keygen -c -C "[email protected]" -f./id-ed25519
新しく更新した鍵でSSHエージェントをリロードします:
ssh-add ~/.ssh/id-ed25519
Githubプロファイルから対応するSSH公開鍵を置き換えます。

GithubからSSHキーを削除する
新しいターミナル・セッションを開き、SSHエージェント・デーモンを起動します:
eval `ssh-agent -s`とします。
以下のコマンドを実行して、マシン内のSSH秘密鍵を削除する:
ssh-add -d ~/.ssh/id-ed25519
Githubアカウントの "SSH and GPG Keys "カテゴリーに戻る。
このページのSSH鍵のリストをスクロールし、削除したい鍵の「Delete」をクリックする。
"I understand, delete this SSH key "をクリックする。

GithubのサーバーにSSHセッションを開始し、古いSSHキーが無効になったことを確認します:
ssh -T [email protected]
SSH 鍵をリンクして Github アカウントを保護することは、公開鍵暗号と暗号化の仕組みを理解するための第一歩にすぎません。Rcloneを使用して暗号化されたクラウドバックアップを作成することで、データアットレストの暗号化についてさらに学びましょう。
一方、Gitフックを使った自動リポジトリ管理についても学ぶことができる。
画像クレジット:Roman Synkevych via Unsplash.すべての改変とスクリーンショットはRamces Redによる。