【PowerShell】SSH公開鍵の作成方法|Ed25519とサーバーへの配置手順

【PowerShell】SSH公開鍵の作成方法 PowerShell

リモートサーバーへ安全に接続するには、パスワード認証ではなく公開鍵認証を使うのが基本です。Windows 10以降には標準でOpenSSHが入っており、PowerShellから ssh-keygen でSSH鍵を作成できます。この記事では、現在推奨のEd25519方式での鍵作成から、公開鍵をサーバーに配置して接続するまでを解説します。

この記事の結論:ssh-keygen -t ed25519 -C "メモ" で鍵を作成します。生成された公開鍵(.pub)をサーバーの ~/.ssh/authorized_keys に追加すれば、秘密鍵はローカルに保管したままパスワードなしで接続できます。
スポンサーリンク

SSH鍵を作成する(Ed25519推奨)

PowerShellを開き、次のコマンドを実行します。現在はEd25519方式が推奨です(短く高速で安全)。-C には識別用のメモ(メールアドレスやPC名など)を入れます。

Ed25519で鍵を作成
ssh-keygen -t ed25519 -C "my-windows-pc"

実行すると次の順に聞かれます。

  1. 保存先:既定は C:\Users\ユーザー名\.ssh\id_ed25519。そのままEnterで問題ありません。
  2. パスフレーズ:秘密鍵を保護する合言葉です。セキュリティを高めるなら設定します(空のEnterでも作成可)。

これで秘密鍵 id_ed25519公開鍵 id_ed25519.pub が生成されます。

古い環境との互換性でRSAが必要な場合はssh-keygen -t rsa -b 4096 のように4096ビットで作成します。特に理由がなければ Ed25519 を選んでおけば十分です。

公開鍵の中身を確認する

サーバーに登録するのは公開鍵(.pub)です。中身は Get-Content で確認できます。

公開鍵を表示
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
サーバーに渡すのは「.pub」の付いた公開鍵だけです。拡張子の無い id_ed25519(秘密鍵)は絶対に他人に渡さず、ローカルに安全に保管してください。

公開鍵をサーバーに配置する

LinuxやmacOSにある ssh-copy-id はWindowsには標準で無いため、PowerShellから公開鍵の中身をパイプでサーバーに渡して追加します。ユーザー名@サーバー の部分はご自身の接続先に置き換えてください。

公開鍵をauthorized_keysに追加(Windows)
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
上のコマンドは「.ssh フォルダ作成 → 公開鍵を追記 → パーミッション設定」を一括で行います。サーバー側のパーミッションは .ssh が 700、authorized_keys が 600 でないと鍵認証が効かないことがあるため、まとめて設定しています。

鍵認証で接続できるか確認する

配置できたら、実際に接続してみます。パスワードを聞かれずに(またはパスフレーズのみで)ログインできれば成功です。

接続テスト
ssh user@example.com
SSH接続の基本オプションや設定ファイル(config)の使い方はPowerShellでSSH接続を行う方法、ポート転送はSSHポートフォワーディングを設定する方法で解説しています。

よくある質問(FAQ)

QRSAとEd25519はどちらを使うべきですか?
A特別な理由がなければEd25519を推奨します。RSAより鍵が短く、高速で安全です。古い機器との互換性でRSAが必要な場合はssh-keygen -t rsa -b 4096 で4096ビットにしてください。
Qssh-keygenが見つからないと言われます。
AWindowsのOpenSSHクライアントが無効になっている可能性があります。「設定 → アプリ → オプション機能」で「OpenSSH クライアント」を追加すると使えるようになります。
Q鍵を作ったのにパスワードを聞かれます。
A公開鍵がサーバーの ~/.ssh/authorized_keys に正しく登録されていないか、パーミッションが原因のことが多いです。.ssh は700、authorized_keys は600 に設定してください。
Qパスフレーズは設定すべきですか?
A設定を推奨します。万一秘密鍵が漏れても、パスフレーズが無ければ悪用されにくくなります。毎回の入力が面倒な場合は ssh-agent に登録すると入力を省けます。

まとめ

PowerShellでのSSH公開鍵作成のポイントを整理します。

  • 鍵作成は ssh-keygen -t ed25519 -C "メモ"(Ed25519推奨)
  • サーバーに渡すのは公開鍵(.pub)だけ。秘密鍵は厳重に保管
  • Windowsには ssh-copy-id が無いので type ... | ssh ... で配置
  • サーバー側は .ssh=700、authorized_keys=600
  • パスフレーズ設定+ssh-agent でセキュリティと利便性を両立

関連として、SSH接続を行う方法SSHポートフォワーディングSSHのポート番号を変更してセキュリティを高める方法もあわせて読むと、SSH運用に強くなれます。