🗝️

SSH接続(公開鍵認証)のための鍵生成とセットアップガイド

2024/10/11に公開

SSH接続(公開鍵認証)のための鍵生成とセットアップガイド

手順概要

  1. 自分のPCで秘密鍵と公開鍵のペアを生成
  2. 自分のPC側に(~/.ssh/config)ファイル生成し、必要事項を記述する
  3. サーバー側の(~/.ssh/authorized_keys)に追記する

詳細手順

1. 自分のPCで秘密鍵と公開鍵の生成

ssh-keygen
というコマンドを実行すると、対話方式で生成できる。

成功すると、.sshというディレクトリに秘密鍵(デフォルト名:id_rsa)と、公開鍵(デフォルト名:id_rsa.pub)が生成される。ファイル名は、上記の対話時に変えられる。

※複数のサーバーとSSH接続する場合は、サーバーごとに鍵のペアを用意する。その場合はキー名を別々にする必要がある。

2. 自分のPC側の設定

~/.ssh/config ファイルを生成し、編集する:

  1. ファイルの作成:

    touch ~/.ssh/config
    
  2. 適切な権限の設定:

    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の主な特徴

  1. 暗号化された通信
  2. 強力な認証メカニズム
  3. データの整合性確保

SSH認証方法の種類

  1. パスワード認証:

    • ユーザー名とパスワードを使用
    • 設定が簡単だが、ブルートフォース攻撃に弱い
  2. 公開鍵認証:

    • クライアントの秘密鍵とサーバーの公開鍵を使用
    • より安全で、自動化に適している
  3. キーボードインタラクティブ認証:

    • サーバーが一連の質問を提示し、クライアントが回答
    • 多要素認証に使用可能
  4. GSSAPI認証:

    • Kerberos等の外部認証システムを利用
    • 大規模組織やシングルサインオン環境で使用
  5. ホストベース認証:

    • クライアントのホスト名とユーザー名に基づく
    • セキュリティ上のリスクがあるため、一般的には非推奨

※以上が主要5種類。他にもある。

テクシア テックブログ

Discussion