MENU

ssh

目次

1. SSHとは?

SSH(Secure Shell)は、ネットワーク上で安全に通信するためのプロトコルです。主に、リモートサーバーに接続して操作するために利用されます。

SSHの役割

  • リモートログイン: サーバーにログインして操作を行う
  • 通信の暗号化: データを暗号化して安全にやり取りする
  • ファイル転送: サーバーとPC間でファイルをやり取りする

2. SSH認証の仕組みを徹底解説

SSH認証は、SSHサーバーが中心となって行います。
SSHサーバーは、リモート接続を受け付け、ユーザーが正しい認証情報を提供した場合にのみアクセスを許可します。

認証の流れ(簡単版)

  1. クライアント(あなたのPC)がSSHサーバーに接続を要求
  2. SSHサーバーが認証情報を確認
  3. 認証が成功すれば接続が確立

3. SSHサーバーの「場所」とはどこか?

SSHサーバーは、リモートで操作したいコンピュータサーバーに設置されています。
そのため、「SSHサーバーがどこにあるのか?」は、接続する対象によって異なります。

SSHサーバーの設置場所の例

  1. クラウドサービス上
    • AWS(Amazon Web Services)、Google Cloud、Microsoft Azureなど
    • 例: Webアプリを動かすためのサーバー
  2. データセンター内の物理サーバー
    • レンタルサーバーやVPS(仮想プライベートサーバー)
    • 例: ホスティングサービスで運用しているサーバー
  3. 社内ネットワーク内
    • 会社のオンプレミス環境(物理サーバーや仮想サーバー)
    • 例: 社内のファイル共有サーバーや開発用サーバー
  4. 自宅や個人のPC
    • 自分のLinuxマシンやRaspberry Pi
    • 例: 自宅で運用しているWebサーバーや開発環境

4. SSHの認証方式(パスワード認証と公開鍵認証)

SSH認証には、主に以下の2つの方法があります。

① パスワード認証

  • 特徴: ユーザー名とパスワードを入力して認証
  • メリット: 簡単に利用可能
  • デメリット: パスワードが漏れると危険
パスワード認証の使い方

(1) 必要な準備

  • サーバー(リモートマシン)が稼働している。
  • サーバーのIPアドレスまたはホスト名、ユーザー名、パスワードを知っている。

(2) 接続手順

  1. ターミナルを開きます。
  2. 以下のコマンドを実行します。
ssh ユーザー名@サーバーのIPアドレスまたはホスト名

例:

ssh [email protected]
  1. サーバーからパスワードの入力を求められるので、指定されたパスワードを入力します。
[email protected]'s password: (パスワードを入力)
  1. 認証が成功すれば、サーバーにログインできます。

ログイン後の画面例:

Welcome to Ubuntu 22.04.3 LTS
user@server:~$


② 公開鍵認証

  • 特徴: 公開鍵と秘密鍵を使った認証
  • メリット: セキュリティが高い
  • デメリット: 鍵の管理が必要
公開鍵認証の使い方

(1) 鍵ペア(公開鍵と秘密鍵)を作成する

  1. ターミナルを開き、以下のコマンドを実行します。
ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス"
  1. 実行すると、以下のようなメッセージが表示されます。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/あなたのユーザー名/.ssh/id_rsa): (Enterキーを押す)
Enter passphrase (empty for no passphrase): (任意でパスフレーズを設定)
Enter same passphrase again: (同じパスフレーズを再入力)
  1. 作成された鍵は以下の場所に保存されます:
    • 秘密鍵: ~/.ssh/id_rsa
    • 公開鍵: ~/.ssh/id_rsa.pub

(2) 公開鍵をサーバーに登録する

次に、作成した公開鍵をサーバーに登録します。

方法1: ssh-copy-idコマンドを使う(簡単!)
  1. 以下のコマンドを実行します。
ssh-copy-id ユーザー名@サーバーのIPアドレスまたはホスト名

例:

ssh-copy-id [email protected]
  1. パスワードを入力すると、自動的に公開鍵がサーバーに登録されます。

方法2: 手動で公開鍵をコピーする
  1. 公開鍵の内容を確認します。
cat ~/.ssh/id_rsa.pub
  1. 表示された公開鍵の内容をコピーします。
  2. サーバーにログインして、以下のコマンドを実行します。
mkdir -p ~/.ssh
echo "コピーした公開鍵" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

(3) 公開鍵認証で接続する

  1. 公開鍵を登録したサーバーに接続します。
ssh ユーザー名@サーバーのIPアドレスまたはホスト名

例:

ssh [email protected]
  1. パスワード入力なしでログインできれば成功です!

5. SSH接続の流れを図解で解説

全体の流れ

  1. あなたのPC(クライアント)がSSHコマンドを実行
  2. SSHサーバーが接続を受け付ける
  3. 認証方式(パスワード認証 or 公開鍵認証)でユーザーを確認
  4. 認証成功後、サーバーにログイン

6. よくある疑問とトラブルシューティング

よくある疑問

  1. SSHサーバーがどこにあるのかわからない
    → 接続先のIPアドレスやホスト名を確認しましょう。クラウドやレンタルサーバーの場合、契約時に提供されます。
  2. 認証に失敗する
    → 公開鍵が正しくサーバーに登録されているか確認しましょう。

トラブルシューティング

エラー内容原因解決策
Connection refusedSSHサーバーが起動していないサーバーの状態を確認
Permission denied認証失敗パスワードや鍵情報を確認
Host key verification failサーバーの鍵が変更された~/.ssh/known_hostsを編集

SSH公開鍵認証には、さまざまな種類のアルゴリズムが存在します。それぞれの特徴や用途をわかりやすくまとめました。


公開鍵認証の主な種類

以下は、SSHで使用される主な公開鍵認証アルゴリズムです。

アルゴリズム特徴推奨度用途
ED25519高速・安全・鍵サイズが小さい。最新技術を採用。★★★★★最新のシステム向け
RSA広く使われている標準的なアルゴリズム。鍵長を調整可能(2048bit~4096bit)。★★★★☆互換性が必要な環境向け
ECDSA楕円曲線暗号を使用。高速で鍵サイズが小さいが、ED25519よりセキュリティは劣る。★★★☆☆リソース制約がある環境向け
DSA古いアルゴリズム。セキュリティ上の懸念があり非推奨。★☆☆☆☆使用非推奨
X.509公開鍵証明書を使用する方式(PKIに基づく)。★★★★☆企業環境や高度なセキュリティが必要な場合

各アルゴリズムの詳細解説

1. ED25519

  • 特徴:
    • 高速で安全。
    • 鍵サイズが小さい(約68バイト)。
    • 最新の楕円曲線暗号技術を使用。
    • デフォルトで多くの最新SSHサーバーに組み込まれている。
  • 推奨環境:
    • 最新のサーバーやクライアント。
    • セキュリティ重視の環境。
  • コマンド例:ssh-keygen -t ed25519 -C "[email protected]"

2. RSA

  • 特徴:
    • もっとも広く利用されている。
    • 鍵長を調整することでセキュリティレベルを変更可能(2048bit以上推奨)。
    • 互換性が高い(古いシステムでもサポートされている)。
    • 鍵サイズが大きく、ED25519より遅い。
  • 推奨環境:
    • レガシーシステムや互換性が必要な環境。
  • コマンド例:ssh-keygen -t rsa -b 4096 -C "[email protected]"

3. ECDSA

  • 特徴:
    • 楕円曲線暗号を使用しており、RSAよりも効率的。
    • 鍵サイズが小さい(256bit、384bit、521bit)。
    • ED25519よりセキュリティが劣る。
  • 推奨環境:
    • IoTデバイスやリソースが限られた環境。
  • コマンド例:ssh-keygen -t ecdsa -b 521 -C "[email protected]"

4. DSA

  • 特徴:
    • 古いアルゴリズムで、現在は非推奨。
    • 鍵長が1024bitに固定されており、セキュリティが低い。
  • 推奨環境:
    • 使用しないことを推奨。
  • 注意:
    • OpenSSHではデフォルトでサポートが無効化されている場合がある。

5. X.509(証明書ベースの公開鍵認証)

  • 特徴:
    • 公開鍵を証明書(X.509形式)として利用。
    • PKI(公開鍵基盤)を使用して、信頼性を向上。
    • 通常の公開鍵認証に比べて管理が複雑。
  • 推奨環境:
    • 企業環境や高セキュリティが必要な場合。
  • 注意:
    • 証明書の発行や管理に専用のインフラが必要。

アルゴリズムの比較表

アルゴリズム処理速度セキュリティ鍵サイズ互換性推奨用途
ED25519小さい新しい環境のみ最新のシステム、セキュリティ重視
RSA (4096bit)大きい高い互換性が必要な環境
ECDSA小さい中程度IoTやリソース制約がある環境
DSA×中程度低い使用非推奨
X.509中程度特定環境のみ高度なセキュリティが必要な場合

アルゴリズム選択のポイント

  1. 最新システムならED25519を使用
    • 高速かつ安全で、鍵サイズも小さいため管理が容易。
  2. 互換性が重要ならRSAを使用
    • 古いシステムや広く使われる環境ではRSAが最適。
  3. IoTやリソース制約がある場合はECDSAを使用
    • 鍵サイズが小さく、効率的な処理が可能。
  4. 企業環境やPKIを利用する場合はX.509を検討
    • 公開鍵証明書を使うことで、信頼性を高める。
  5. DSAは使用しない
    • セキュリティ上の理由で非推奨。

まとめ

SSH公開鍵認証には、さまざまなアルゴリズムがありますが、現在の推奨は ED25519 または RSA(4096bit) です。用途や環境に応じて最適なアルゴリズムを選択してください。

  • ED25519: 最新技術で安全かつ高速。新しい環境向け。
  • RSA: 互換性が高く、広く利用されている。
  • ECDSA: リソース制約がある場合に有効。
  • X.509: 高度なセキュリティが必要な場合に利用。
  • DSA: 使用しない。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次