SSHとは
SSH (Secure Shell) は、ネットワーク経由で安全にリモートコンピューターにログインしたり、ファイルの転送やコマンドの実行を行うためのプロトコルです。
通信内容を暗号化して送信するため、通信内容が盗聴されることを防ぎ、安全性を確保することができます。
SSHの認証方式
SSHにおける認証は、通常、パスワード認証または公開鍵認証のいずれかを使用します。
パスワード認証
パスワード認証は、ユーザー名とパスワードを使用して認証する方法です。
ユーザー名とパスワードは暗号化されて送信されるため、通信が盗聴されてもパスワードが漏れる心配はありません。しかし、パスワードが推測されたり、不正なアクセスを試みる攻撃者によって総当たり攻撃を受ける可能性があるため、セキュリティ上の問題があります。
公開鍵認証
公開鍵認証は、秘密鍵と公開鍵の2つの鍵を使用して認証する方法です。
ユーザーはまず、自分のクライアントコンピューターに対応する秘密鍵を保持します。そして、リモートコンピューターに自分の公開鍵を登録します。
その後、SSHクライアントは、認証時に自分の秘密鍵を使用して、リモートコンピューターが要求する暗号化された情報を作成し、リモートコンピューターに送信します。リモートコンピューターは、自分のデータベースに登録されたユーザーの公開鍵を使用して、この情報を検証します。
この方法では、ユーザー名とパスワードを使わずに、より強力な認証を実現することができます。
鍵ペアの生成手順
鍵ペアは、ssh-keygen
コマンドを用いて生成することができます。鍵生成は対話形式で行われます。
暗号アルゴリズムの設定
鍵ペアを生成するには、以下のコマンドを実行します。
ssh-keygen -t rsa -b 4096
この例では、RSAという暗号アルゴリズムで、鍵長が4096の鍵を生成しています。
暗号アルゴリズムは、-t
オプションで指定できます。指定できる暗号アルゴリズムは以下の通りです。
- RSA
- DSA
- ECDSA
- Ed25519
鍵長は、-b
オプションで指定できます。
鍵の保存場所とファイル名の設定
Enter file in which to save the key (<ホームディレクトリ>/.ssh/id_rsa): [<保存場所とファイル名>]
鍵の保存場所とファイル名の入力が求められます。特に指定がなければデフォルトのままEnterキーを押します。
パスフレーズの設定
Enter passphrase (empty for no passphrase): [<パスフレーズ>]
Enter same passphrase again: [<パスフレーズ>]
パスフレーズを設定するように求められます。パスフレーズを設定することで、秘密鍵を保護することができます。
パスフレーズが不要の場合はそのままEnterキーを押します。
鍵ペアの生成
Your identification has been saved in <秘密鍵へのパス>.
Your public key has been saved in <公開鍵へのパス>.
The key fingerprint is:
<fingerprintの表示>
The key's randomart image is:
<randomart imageの表示>
このように表示されれば鍵ペアの生成は完了です。
デフォルト設定の場合、.ssh
ディレクトリにid_rsa
という名前の秘密鍵と、id_rsa.pub
という名前の公開鍵が生成されます。
公開鍵をリモートホストに登録することで、SSH接続を安全に行うことができます。
コメント