公開鍵認証とは?サーバーへの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