🗝️
SSH接続(公開鍵認証)のための鍵生成とセットアップガイド
SSH接続(公開鍵認証)のための鍵生成とセットアップガイド
手順概要
- 自分のPCで秘密鍵と公開鍵のペアを生成
- 自分のPC側に(~/.ssh/config)ファイル生成し、必要事項を記述する
- サーバー側の(~/.ssh/authorized_keys)に追記する
詳細手順
1. 自分のPCで秘密鍵と公開鍵の生成
ssh-keygen
というコマンドを実行すると、対話方式で生成できる。
成功すると、.sshというディレクトリに秘密鍵(デフォルト名:id_rsa)と、公開鍵(デフォルト名:id_rsa.pub)が生成される。ファイル名は、上記の対話時に変えられる。
※複数のサーバーとSSH接続する場合は、サーバーごとに鍵のペアを用意する。その場合はキー名を別々にする必要がある。
2. 自分のPC側の設定
~/.ssh/config ファイルを生成し、編集する:
-
ファイルの作成:
touch ~/.ssh/config
-
適切な権限の設定:
chmod 600 ~/.ssh/config
configの記述例(VPSと接続する場合):
# VPS1の設定
Host vps1 # サーバーの識別名を定義。(接続先の名前みたいなもの)
HostName 123.45.67.89 # IPアドレスまたはドメイン名
User myusername # ログインするユーザー名
IdentityFile ~/.ssh/id_rsa_vps1 # 秘密鍵ファイルのパス
# Port 22 # 標準SSHポート(省略可能)
# VPS2の設定
Host vps2
HostName example.com
User adminuser
IdentityFile ~/.ssh/id_rsa_vps2
Port 2222 # 標準SSHポート以外の場合はPortを指定
※同じサーバーに、別のユーザーで接続する設定を追加する場合には、識別名も別で用意する必要がある。秘密鍵は同じでOK。共通部分をまとめて書いたりもできるが、今回は説明を省く。
3. サーバー側の設定
すでにサーバー側に.sshディレクトリが存在する場合は、公開鍵を自分のPCのid_rsa.pubの中からコピーしてきて、~/.ssh/authorized_keys に手動で追加する。
authorized_keysの記述の参考例(複数のPCから接続するにはそのPCの数分記述が必要):
# PC1用の公開鍵
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf7O7CvKSfnFMk...
# PC2用の公開鍵
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCpHD3KulqLVbx0...
.sshディレクトリ、authorized_keysファイルが存在しない場合は、手動で作成してから、鍵を記述する。
作成方法:
# .sshディレクトリを作成
mkdir -p ~/.ssh
# authorized_keysファイルを作成
touch ~/.ssh/authorized_keys
# 適切な権限を設定
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
※自動で作成する方法は今回省略する。
以上である。
これをどう使うかは、今度追記する。
以下おまけ
SSHとはなにか
SSH (Secure Shell):
- ネットワーク上で安全に通信を行うためのプロトコル
- 主な用途: リモートサーバーへのセキュアな接続、ファイル転送
SSHの主な特徴
- 暗号化された通信
- 強力な認証メカニズム
- データの整合性確保
SSH認証方法の種類
-
パスワード認証:
- ユーザー名とパスワードを使用
- 設定が簡単だが、ブルートフォース攻撃に弱い
-
公開鍵認証:
- クライアントの秘密鍵とサーバーの公開鍵を使用
- より安全で、自動化に適している
-
キーボードインタラクティブ認証:
- サーバーが一連の質問を提示し、クライアントが回答
- 多要素認証に使用可能
-
GSSAPI認証:
- Kerberos等の外部認証システムを利用
- 大規模組織やシングルサインオン環境で使用
-
ホストベース認証:
- クライアントのホスト名とユーザー名に基づく
- セキュリティ上のリスクがあるため、一般的には非推奨
※以上が主要5種類。他にもある。
Discussion