リモートサーバーへ安全に接続するには、パスワード認証ではなく公開鍵認証を使うのが基本です。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"
実行すると次の順に聞かれます。
- 保存先:既定は
C:\Users\ユーザー名\.ssh\id_ed25519。そのままEnterで問題ありません。 - パスフレーズ:秘密鍵を保護する合言葉です。セキュリティを高めるなら設定します(空の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運用に強くなれます。

