RICORA< image/svg+xml > image/svg+xml >
RICORA Programming Team

SSHガイド

SSH とは

Secure Shell の略で、ネットワーク上にある端末(サーバ、ルータなど)に安全に操作するためのプロトコルです。 接続手段は パスワード方式と公開鍵認証の 2 パターン用意されている。

この記事では GitHub と通信することを想定しているため、後者の公開鍵認証を取り上げる。

公開鍵とは

1 つの鍵(共通鍵)だけでやり取りすると、その鍵が外部に流出してしまったときに、自分と通信相手以外の第三者までが、解読できてしまう。 それを解決するために誕生したのが公開鍵です。

公開鍵を用いて、 AliceBob に暗号文を送る手順は次のとおりです。

  1. Bob が公開鍵と秘密鍵の異なる 2 つの鍵を用意する。( 2 つの鍵は対応している)
  2. BobAlice に公開鍵を提示する。(公開鍵では暗号文を復号できないので、Twitter のような不特定多数が見られる場所に載せても問題ない)
  3. AliceBob の提示した公開鍵を使って送りたい文章を暗号化し、Bob に送る。
  4. BobAlice から送られてきた暗号文を秘密鍵を用いて復号する。

実際、メールなどを暗号化する際には GPG というものを使うのが一般的です。

GitHub で SSH 接続をする方法

今回は RSA よりも鍵長が短く高速に処理ができる エドワーズ曲線デジタル署名アルゴリズムの ED25519 を用いる。

公開鍵と秘密鍵を生成する

  1. Windows の場合は Git Bash を、Mac, GNU/Linux の場合は ターミナルを開く。
  2. 下記のコマンドをコマンドラインに入力する。
ssh-keygen -t ed25519

そうすると、次のように表示される。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/user/.ssh/id_ed25519):

どこに保存するか聞かれるので、特に指定がなければ Enter を押す。 次に、以下のように新しいパスワードの入力を求められる。 適切なパスワードを設定して Enter を押し、先程設定したパスワードをもう一度入力して Enter を押す。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

そうするとホームディレクトリの直下に .ssh ができ、その中に id_ed25519id_ed25519.pub の2つの鍵が生成される。

GitHub に公開鍵をプッシュする

ここで 先程作った 公開鍵を登録する。

1. New SSH key をクリックする。

ssh-add-ssh-key

2. 適当な Title を設定し、key のフォームに公開鍵をペーストする。

Mac の場合は pbcopy < ~/.ssh/id_ed25519.pub

Windows の場合は clip < ~/.ssh/id_ed25519.pub

で公開鍵をコピーし Key の入力フォームにペーストする。

ssh-key-paste

3. ssh -T git@github.com とコマンドラインに入力し、パスワードを入力して、接続できてるか確認する。

Hi "GitHub のユーザー名"! You've successfully authenticated, but GitHub does not provide shell access.

と出てきたら成功。