なぜssh-keygenを使う?
リモートサーバに接続する際、毎回パスワードを入力するのは面倒です。「ssh-keygen」を使用すると、パスワード入力の手間を省き、セキュリティを向上させつつ、リモートサーバへのアクセスを簡単にできます。
Windows環境
1. .sshフォルダの作成
まず、.sshフォルダが存在しない場合は、以下のコマンドでフォルダを作成します:
mkdir "%USERPROFILE%\.ssh"
2. SSH鍵の生成
コマンドプロンプトを開き、以下のコマンドを実行します:
ssh-keygen -t rsa -b 4096 -f "%USERPROFILE%\.ssh\id_rsa" -N ""
このコマンドを実行すると、次のようなメッセージが表示されます。
Generating public/private rsa key pair.
Your identification has been saved in C:\Users\YourUsername\.ssh\id_rsa
Your public key has been saved in C:\Users\YourUsername\.ssh\id_rsa.pub
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX YourUsername@YourComputer
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
このメッセージが表示されれば、SSH鍵の生成は完了です。
3. SSH鍵をアップロード
SSH鍵の秘密鍵と公開鍵が生成されたら、リモートサーバにSSH鍵の公開鍵をアップロードします。PowerShellを開いて、以下のコマンドを実行します:
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh [username]@[remote_host] "cat >> .ssh/authorized_keys"
この操作の際、リモートサーバのパスワードを一度だけ入力する必要があります。
ジャンプサーバ環境(Linux)
ジャンプサーバを使用している場合、ジャンプサーバ内でも同様の手順を繰り返す必要があります。
1. SSH鍵の生成
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
2. 公開鍵のアップロード
ssh-copy-id [sshユーザ名]@[リモートサーバのホスト or IP]
Windowsではssh-copy-idコマンドが標準で利用できないため、ジャンプサーバ(通常はLinux環境)で実行することを想定しています。
まとめ
SSH鍵の生成と使用には、以下のようなメリットがあります:
- セキュリティの向上:強力な暗号化により、パスワード認証よりも安全です
- 利便性の向上:パスワード入力が不要になり、ログインプロセスが簡素化されます
- 管理の容易さ:中央集中型の鍵管理が可能になります
- 自動化の促進:スクリプトやツールによる自動ログインが容易になります
ssh-keygen コマンドを適切に使用することで、これらのメリットを最大限に活用し、リモートサーバとの安全で効率的な通信を実現できます。