Windows

WindowsからLinuxへのSSH鍵認証の実現

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 との違い
Ed25519RSA 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 の行を消すと安全です。

スポンサーリンク
タイトルとURLをコピーしました