WindowsでSSHの公開鍵・秘密鍵を生成する方法|ssh-keygenコマンド徹底解説

WindowsからLinuxサーバーを管理したことがある方なら、SSHクライアントとして「PuTTY」を使った経験があるか、少なくとも名前は聞いたことがあるでしょう。長年にわたり定番ツールとして愛されてきた優秀なユーティリティですが、2019年以降、Windows 10には標準でOpenSSHクライアントが搭載されるようになり、もはやPuTTYは必須ではなくなりました。
なぜパスワードによるログインは避けるべきなのか
サーバー上で動作するOpenSSHデーモン(sshd)は、長年の利用とセキュリティパッチの蓄積によって非常に堅牢に作られています。そのため、SSHデーモン自体の脆弱性が原因でサーバーが侵入されるケースはごく稀です。しかし現実には、管理者が脆弱なパスワードを使用していることが侵入のきっかけになる例が多く存在します。英数字を組み合わせた一見複雑なパスワードでも、総当たり攻撃(ブルートフォース攻撃)に対しては意外と脆いものです。
そこで登場するのがSSH鍵認証です。SSH鍵は構造的にあまりにも複雑なため、ブルートフォース攻撃での突破は事実上不可能です。可能であれば、サーバーの「sshd_config」ファイルでパスワードログインを無効化し、鍵認証へ切り替えましょう。出張などでノートPCを持ち運べない場合は、秘密鍵をUSBメモリに入れて物理的なキーホルダーに付けておくのも有効です。このように工夫するだけで、サーバーの安全性は格段に向上します。
SSHの公開鍵・秘密鍵ペアを生成する手順
まず、スタートメニューからコマンドプロンプトを開き、以下のコマンドを入力してOpenSSHがインストールされているか確認します。
ssh -V
バージョン情報が表示されれば成功です。表示結果は下記画像のようなイメージになります。

もし「コマンドが認識されません」というエラーが表示された場合は、こちらの手順に従ってOpenSSHをインストールしてください。このエラーが出るのは、長期間アップデートされていない古いWindows 10のみです。
続いて、公開鍵と秘密鍵のペアを生成します。コマンドプロンプトで以下を入力してください。
ssh-keygen
最初のプロンプト「Enter file in which to save the key(鍵の保存先ファイルの指定)」では、そのままEnterキーを押せばデフォルトの場所に保存されます。
次のプロンプト「Enter passphrase(empty for no passphrase)(パスフレーズの入力)」では、以下の2つの選択肢があります。
- Enterキーを押す:暗号化されていない鍵が作成されます。そのコンピュータを自分一人しか使わないのであれば、これでも安全です。
- パスフレーズを入力する:鍵が暗号化されます。家族や同僚とPCを共有している場合はこちらがおすすめです。特に、鍵をUSBメモリに入れて持ち運ぶ予定があるなら、必ずパスフレーズを設定しましょう。強力なパスフレーズを設定しておけば、万が一USBメモリから鍵を盗まれても、パスワードなしでは使用できません。
処理が完了すると、下記画像のようなランダムな文字列のアスキーアートが表示されます。

公開鍵の中身を確認してコピーする
名前の通り、秘密鍵はあなた自身だけが持つべきものです。絶対にサーバー上にコピー・保存しないでください。
一方、公開鍵は、アクセスしたいサーバー側の「~/.ssh/authorized_keys」ファイルに追記(貼り付け)して保存します。鍵の中身を確認してコピーするには、コマンドプロンプトで以下のコマンドを実行し、メモ帳で開きましょう。
notepad %userprofile%\.ssh\id_rsa.pub
現在、ほとんどのクラウドVPSプロバイダーは、Webベースのコントロールパネルから公開鍵を簡単に登録できる仕組みを提供しています。この公開鍵を関連付けた状態でサーバーを起動すれば、あとは自分の秘密鍵でログインできるようになります。秘密鍵がデフォルトの場所にあれば、サーバー/VPSへのログインコマンドは以下のようにシンプルです。
ssh root@203.0.113.1
まとめ
お分かりの通り、最近のWindowsではSSH鍵の生成が非常に簡単になりました。基本的にはssh-keygenコマンドひとつで作業は完了します。もし公開鍵をサーバーに登録する方法がわかりにくい場合は、契約しているプロバイダーの公式ドキュメントを参照してください。多くの場合、詳細な手順を解説した専用ページが用意されています。
-
SSHサーバーを使って動かなくなったWindows PCにアクセス・復旧させる方法
システムが突然クラッシュし、どんなコマンドにも応答しなくなることは珍しくありません。さらに困るのは、大事なファイルにアクセスしたいのにPCがまったく動かせない状態になってしまったときです。しかし、心配はいりません。SSHサーバーを活用すれば、不具合を起こしたWindows PCにもアクセスでき、事態を打開できる可能性があります。まずは、SSHについて簡単におさらいしておきましょう。SSHサーバーとは?SSH(Secure Shell)は、安全性の確保されていないネットワーク上でも、ネットワークサービスを安全に操作できるように設計された暗号化通信プロトコルです。代表的な用途としては、別のコンピュ
-
Windows 11でDNSサーバーを変更する方法【設定アプリ・コントロールパネル対応】
Windows 11のPCやノートパソコンでDNS設定を見直すことは、プライバシーを強化したい方にとって重要な作業です。Webページを開くときも、アプリがバックグラウンドでサーバーに接続するときも、DNSを変更しておけばPC上のすべてのインターネット通信を保護できます。この記事では、初心者の方に向けて、Windows 11でDNSサーバーを変更する方法を2つの手順で詳しく解説します。 DNSとは?なぜ変更する必要があるのか? 多くの人にとって、インターネットへの接続はスイッチを入れるように簡単なものになっています。面倒な手順を踏むことなく、数秒でデバイスをネットワークにつなげられるのは、D