その他 Tips
Sponsored Link

OpenSSH : SSH 鍵ペア認証2025/04/24

 

SSH クライアント用の秘密鍵と SSH サーバー用の公開鍵の鍵ペアを作成し、鍵ペアによる認証でログインできるようにします。

[1] デフォルト設定では、一般ユーザーの公開鍵のファイル名は、Linux 等と同様に [authorized_keys] となっていますが、
[serverworlds] グループのユーザーに関しては、異なるファイル名の公開鍵の設定となっているため、注意が必要です。
PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# 一般ユーザーは [authorized_keys]
PS C:\Users\serverworld> Get-Content C:\ProgramData\ssh\sshd_config | Select-String -Pattern "^AuthorizedKeysFile" 

AuthorizedKeysFile      .ssh/authorized_keys


# [serverworlds] グループは [serverworlds_authorized_keys]
PS C:\Users\serverworld> Get-Content C:\ProgramData\ssh\sshd_config -Tail 3 

Match Group serverworlds
       AuthorizedKeysFile __PROGRAMDATA__/ssh/serverworlds_authorized_keys
[2] SSH 鍵ペアを作成したい任意のユーザーでログオンして PowerShell を起動し、設定します。
PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# 鍵ペアを作成
PS C:\Users\serverworld> ssh-keygen 
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\Serverworld/.ssh/id_ed25519):   # 変更の必要がなければ空 Enter
Created directory 'C:\\Users\\Serverworld/.ssh'.
Enter passphrase (empty for no passphrase):   # パスフレーズ設定 (ノーパス設定にする場合は空 Enter)
Enter same passphrase again:
Your identification has been saved in C:\Users\Serverworld/.ssh/id_ed25519
Your public key has been saved in C:\Users\Serverworld/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:4sZ63SkfIcIC03O7Nv8c2jNx6rhN04wrSidvQ5jnaNQ serverworld@RX-0
The key's randomart image is:

PS C:\Users\serverworld> cd .ssh 
PS C:\Users\serverworld\.ssh> ls 

    Directory: C:\Users\serverworld\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/24/2025   6:35 PM            464 id_ed25519
-a----         4/24/2025   6:35 PM             99 id_ed25519.pub

# 公開鍵リネーム
PS C:\Users\serverworld\.ssh> mv id_ed25519.pub authorized_keys 
PS C:\Users\serverworld\.ssh> ls 

    Directory: C:\Users\serverworld\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/24/2025   6:35 PM             99 authorized_keys
-a----         4/24/2025   6:35 PM            464 id_ed25519
[3] サーバー側で作成した SSH 秘密鍵をクライアント側にファイル転送すると、そのクライアントから対象サーバーに、鍵ペア認証でログイン出来るようになります。
PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# 存在しない場合は [.ssh] フォルダー作成
PS C:\Users\serverworld> mkdir .ssh 
PS C:\Users\serverworld> cd .ssh 

# サーバーで作成した SSH 秘密鍵を転送
PS C:\Users\serverworld\.ssh> scp Serverworld@10.0.0.101:'C:\Users\serverworld\.ssh\id_ed25519' ./ 
The authenticity of host '10.0.0.101 (10.0.0.101)' can't be established.
ED25519 key fingerprint is SHA256:cPH/QhY3fA+xz3z1guTIwl2emYhlzsTXNGzdS2nh5wQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.0.101' (ED25519) to the list of known hosts.
Serverworld@10.0.0.101's password:
id_ed25519

PS C:\Users\serverworld\.ssh> ls 

    Directory: C:\Users\serverworld\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/24/2025   4:37 AM            464 id_ed25519
-a----         4/24/2025   4:26 AM            831 known_hosts
-a----         4/24/2025   4:26 AM             93 known_hosts.old

# 確認
PS C:\Users\serverworld\.ssh> ssh Serverworld@10.0.0.101 hostname 
Enter passphrase for key 'C:\Users\serverworld/.ssh/id_ed25519':   # 設定したパスフレーズ
RX-7   # 認証できた
[4] なお、鍵ペア認証にした場合、以下のように SSH サーバー側でパスワード認証を禁止すると、よりセキュアな環境とすることができます。
PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# パスワード認証不可に変更
PS C:\Users\serverworld> (Get-Content C:\ProgramData\ssh\sshd_config).Replace("#PasswordAuthentication yes","PasswordAuthentication no") | Set-Content C:\ProgramData\ssh\sshd_config 
PS C:\Users\serverworld> echo 'KbdInteractiveAuthentication no' | Add-Content C:\ProgramData\ssh\sshd_config -Encoding UTF8 

PS C:\Users\serverworld> Restart-Service -Name "sshd" 
関連コンテンツ