WindowsからLinux環境へSSH接続する場合、パスワード認証とSSH鍵認証があります。繰り返し接続を行うのでSSH鍵認証にします。~/.ssh/configを使うとユーザの入力なども省略可能になり便利です。
鍵の作成
ssh-keygenコマンドを使いRSA形式のSSH鍵ペアを作成する。鍵ペアを作成する際、パスフレーズの入力を求められますが、入力すると秘密鍵がこのパスフレーズで暗号化される事に対し、省略すると平文のままとなります。そのためパスフレーズを省略する場合秘密鍵の盗難により注意が必要です。
デフォルトで C:\Users\<ユーザ名>\.ssh\id_rsa と id_rsa.pub が生成される。
Windows環境(クライアント側)でSSH鍵の作成
ssh-keygen -t rsa -b 4096 -C "sooni@soopc"
作成例
sooni >> ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\sooni/.ssh/id_rsa): ←保存先
Enter passphrase (empty for no passphrase): ←今回パスフレーズの設定はしない
Enter same passphrase again:
Your identification has been saved in C:\Users\sooni/.ssh/id_rsa ←作成した秘密鍵
Your public key has been saved in C:\Users\sooni/.ssh/id_rsa.pub ←作成した公開鍵
The key fingerprint is:
SHA256:GVh1W4v2vHnros5B1qrx67g9Kta+cQWxW2N9Kr1pQuw sooni@soopc ←fingerprint
The key's randomart image is:
+---[RSA 4096]----+
| ..... . |
| o .o+.. |
| . . o++...|
| o o*+...|
| S ++o= |
| ooo. = |
| .o +E * .|
| o .X..+ ..|
| . oB*O+ oo |
+----[SHA256]-----+
sooni >>
作成した鍵の確認
sooni >> cd .ssh
.ssh >> ls
Directory: C:\Users\sooni\.ssh
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2025/09/20 14:04 3381 id_rsa ←秘密鍵
-a--- 2025/09/20 14:04 742 id_rsa.pub ←公開鍵
.ssh >>
SSHクライアント設定ファイルへ接続情報を記載する
SSHクライアント設定ファイル(~/.ssh/config)へ以下を追記(存在しない場合は新規作成)する。このファイルは、OpenSSHクライアントに含まれるコマンド(ssh/scp/sftpなど)が参照します。
Host vm105
HostName vm105
User sooni
IdentityFile C:\Users\sooni\.ssh\id_rsa
サーバ側へ公開鍵を登録
作成した公開鍵をサーバ側へ登録
## 公開鍵をサーバ側へコピー
.ssh >> scp ./id_rsa.pub sooni@vm105:/home/sooni/.
sooni@vm105's password:
id_rsa.pub 100% 738 240.2KB/s 00:00
.ssh >>
## sshでログイン
.ssh >> ssh sooni@vm105
sooni@vm105's password:
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sat Sep 20 17:57:29 2025 from 192.168.56.1
## 先ほどコピーした公開鍵を確認
[sooni@vm105 ~]$ ls -l ./id_rsa.pub
-rw-r--r--. 1 sooni sooni 738 9月 20 18:01 ./id_rsa.pub
## 公開鍵を公開鍵許可リストへ登録する
[sooni@vm105 ~]$ cat ./id_rsa.pub > ~/.ssh/authorized_keys
[sooni@vm105 ~]$
## 不要になった公開鍵を削除
[sooni@vm105 ~]$ rm ./id_rsa.pub
サーバ側への接続確認
## sshで接続してもパスワードを聞かれなくなりました
.ssh >> ssh sooni@vm105
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sat Sep 20 18:24:08 2025 from 192.168.56.1
[sooni@vm105 ~]$
## sftp接続もこの通り
.ssh >> sftp sooni@vm105
Connected to vm105.
sftp>
## scpもこの通り
sooni >> scp ./test.txt vm105:/home/sooni/.
test.txt 100% 4 2.0KB/s 00:00
## 念のためsshで接続してファイルコピーができているか確認
sooni >> ssh sooni@vm105
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sat Sep 20 18:37:26 2025 from 192.168.56.1
[sooni@vm105 ~]$ ls -l /home/sooni/test.txt
-rw-r--r--. 1 sooni sooni 4 9月 20 18:42 /home/sooni/test.txt
[sooni@vm105 ~]$
追記:今なら Ed25519 で作る(2026-10-14)
この記事では RSA(4096ビット)で鍵を作りましたが、いま新しく作るなら Ed25519 がおすすめです。なお、RSA 4096 も今でも十分に安全なので、すでに作った鍵を急いで作り直す必要はありません。
作り方
sooni >> ssh-keygen -t ed25519 -a 100 -C "sooni@soopc"
-bは不要です(Ed25519 は鍵の長さが決まっています)-a 100は、パスフレーズから秘密鍵を守る計算の回数です(標準は16)。パスフレーズを付けたときに、総当たりで破られにくくなります- 作られるファイルは
id_ed25519(秘密鍵)とid_ed25519.pub(公開鍵)です。~/.ssh/configのIdentityFileもこちらに変えます
RSA 4096 との違い
| Ed25519 | RSA 4096 | |
|---|---|---|
| 仕組み | 楕円曲線(Curve25519) | 素因数分解の難しさ |
| 強さ | RSA 3072 くらいに相当(十分) | 十分 |
| 公開鍵の長さ | 約80文字 | 約720文字 |
| 速さ | 速い | 署名が遅い(ふだんは気にならない程度) |
| 使える環境 | OpenSSH 6.5(2014年)以降 | ほぼどこでも |
Ed25519 がおすすめされる一番の理由は、強さよりも間違えにくさです。鍵の長さを選ぶ必要がなく、署名のときに乱数を使わない作りなので、実装や環境の不備で秘密鍵が漏れる心配がほとんどありません。OpenSSH 9.5(2023年)からは、-t を付けずに作ったときの鍵も Ed25519 になりました。
「RSA はもう使えない」は誤解
OpenSSH 8.8(2021年)で無効になったのは、RSA 鍵そのものではなく、SHA-1 を使う「ssh-rsa」という署名のやり方です。新しい OpenSSH 同士なら、RSA 鍵でも自動的に SHA-256/512 で署名するので、この記事の鍵はそのまま使えます。
Ed25519 が使えない環境
- OpenSSH 6.5 より前のサーバ(CentOS 6 など)
- 古いネットワーク機器や、古い Java の SSH ライブラリ
- AWS EC2 の Windows インスタンスのキーペア(RSA のみ)
- FIPS モードで動いているサーバ(使えないことがあります)
公開鍵の登録は「追記」で
本文では cat ./id_rsa.pub > ~/.ssh/authorized_keys としていますが、> は上書きなので、すでに登録してある鍵が消えてしまいます。鍵を足すときは >>(追記)にします。Windows の PowerShell から1行で登録することもできます。
.ssh >> type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh sooni@vm105 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
authorized_keys には1行に1つずつ、複数の鍵を書けます。RSA の鍵を残したまま Ed25519 の鍵を足し、つながることを確かめてから RSA の行を消すと安全です。

