😀

公開鍵認証とは?サーバーへのSSH接続手順まとめ

に公開

公開鍵認証とは?

公開鍵認証とは、サーバーへのSSH接続時に「公開鍵」と「秘密鍵」のペアを使って認証する方法です。
パスワードを使わず、事前にサーバー側に公開鍵を設置することで、セキュアかつ自動化しやすい接続が可能になります。
イメージとしては、秘密鍵をローカルに、サーバー側に公開鍵を配置する流れになります。
この記事では鍵の作成からSSH接続、config設定まで、簡単に手順を解説します。

秘密鍵と公開鍵を作成

1.秘密鍵と公開鍵を作成します

ssh-keygen -t ed25519 -C "自身のメールアドレス"

2.鍵の保存場所を設定

Enter file in which to save the key (/Users/[ユーザー名]/.ssh/id_ed25519):

鍵をどこに保存するか聞かれます
※特に指定がなければエンターキーで、それぞれOSのデフォルトの場所に設置されます。

  • mac ・・・ 「~/.ssh/」
  • Linux ・・・ 「~/.ssh/」
  • windows ・・・ 「C:\Users\[ユーザー名].ssh」

※もし違う場所に鍵を作成してしまった場合は、適切な場所へ移動ください

# mv 今鍵があるパス ~/.ssh/
例)mv /Users/[ユーザー名]/Downloads/〇〇 ~/.ssh/

3.秘密鍵のパスワードを設定

Enter passphrase for "/Users/[ユーザー名]/.ssh/id_ed25519" (empty for no passphrase):

鍵にパスワードを設定するか聞かれます
※特に設定しない場合は、エンターキーでスキップします。
※パスワードを設定した場合は、秘密鍵を使ってSSH接続をするときにパスワードを聞かれます

4.再度パスフレーズを入力

Enter same passphrase again:

設定しない場合はスキップ

権限を変更

chmod 600 id_ed25519

秘密鍵のセキュリティを高めるために、権限を変更

SSH接続

作成した公開鍵は、指定のサーバーの適切な場所へアップロードください
※または公開鍵の中身をコピーして、サーバーの中に公開鍵を作成して貼り付けるでも大丈夫です。
サーバー側のユーザーとIPアドレスを使って接続します

ssh -i ~/.ssh/id_ed25519 [ユーザー名]@[IPアドレス]

もし以下のようなエラーが出た場合は、再度秘密鍵の権限を確認ください

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/ユーザー名/.ssh/〇〇' are too open.

SSH接続は以上となります

【参考1】SSH設定ファイル config の使い方

毎回長いコマンドで接続するのは手間なので、
~/.ssh/configファイルを作成して設定を記述すると、短いコマンドで接続できるようになります。

以下のように ~/.ssh/config に記述します:

Host server
    Hostname [IPアドレス] or [DNS名]              #ホスト名
    User [ユーザー名]                              #ユーザー
    IdentityFile [/Users/[ユーザー名]/.ssh/〇〇] #秘密鍵のパス

以下のコマンドで接続できるようになります

ssh server

【参考2】Githubへ公開鍵を設定

cd ~/.ssh
cat 〇〇.pub

公開鍵の中身をコピーします。
次にGithubサイトへ移動し、サイドバー「Settings」「SSH and GPG keys」で「New SSh key」。
Keyのフォームにコピーしたものを貼り付けます

Githubの公開鍵の設定は完了です。

まとめ

SSH接続は初めて触れると難しく感じるかもしれませんが、
公開鍵・秘密鍵の仕組みや、設定ファイル(~/.ssh/config)の活用方法を理解すれば、
セキュアかつ効率的にリモートサーバーへ接続できるようになります

少しでも皆さんの参考になれば嬉しいです。

Discussion