OpenSSH : SSH 鍵ペア認証2021/12/01 |
SSH クライアント用の秘密鍵と SSH サーバー用の公開鍵の鍵ペアを作成し、鍵ペアによる認証でログインできるようにします。
|
|
[1] | デフォルト設定では、一般ユーザーの公開鍵のファイル名は、Linux 等と同様に [authorized_keys] となっていますが、 [Administrators] グループのユーザーに関しては、異なるファイル名の公開鍵の設定となっているため、注意が必要です。 |
PowerShell Copyright (C) Microsoft Corporation. All rights reserved. # 一般ユーザーは [authorized_keys] PS C:\Users\Administrator> Get-Content C:\ProgramData\ssh\sshd_config | Select-String -Pattern "^AuthorizedKeysFile" AuthorizedKeysFile .ssh/authorized_keys # [Administrators] グループは [administrators_authorized_keys] PS C:\Users\Administrator> Get-Content C:\ProgramData\ssh\sshd_config -Tail 3 Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys |
[2] | SSH 鍵ペアを作成したい任意のユーザーでログオンして PowerShell を起動し、設定します。 |
PowerShell Copyright (C) Microsoft Corporation. All rights reserved. # 鍵ペアを作成 PS C:\Users\serverworld> ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\serverworld/.ssh/id_rsa): # 変更の必要がなければ空 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_rsa. Your public key has been saved in C:\Users\serverworld/.ssh/id_rsa.pub. The key fingerprint is: SHA256:mOyrz2MfAghFfjgBsnPVhFR3rDC3rtWbrz6kNc/2/DQ serverworld@RX-7 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---- 11/29/2021 11:53 PM 2655 id_rsa -a---- 11/29/2021 11:53 PM 571 id_rsa.pub # 公開鍵リネーム PS C:\Users\serverworld\.ssh> mv id_rsa.pub authorized_keys PS C:\Users\serverworld\.ssh> ls Directory: C:\Users\serverworld\.ssh Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 11/29/2021 11:53 PM 571 authorized_keys -a---- 11/29/2021 11:53 PM 2655 id_rsa # 公開鍵のアクセス権確認 PS C:\Users\serverworld\.ssh> icacls authorized_keys authorized_keys BUILTIN\Administrators:(F) NT AUTHORITY\SYSTEM:(F) RX-7\Serverworld:(M) Everyone:(RX) Successfully processed 1 files; Failed processing 0 files # 公開鍵に [Everyone] のアクセス権があると鍵ペアの認証が通らないため削除 PS C:\Users\serverworld\.ssh> icacls authorized_keys /remove Everyone processed file: authorized_keys Successfully processed 1 files; Failed processing 0 files PS C:\Users\serverworld\.ssh> icacls authorized_keys authorized_keys BUILTIN\Administrators:(F) NT AUTHORITY\SYSTEM:(F) RX-7\Serverworld:(M) Successfully processed 1 files; Failed processing 0 files |
[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_rsa' ./ The authenticity of host '10.0.0.101 (10.0.0.101)' can't be established. ECDSA key fingerprint is SHA256:CVf0V+qRYgYcyqEcjMOCRNqpUsikvx/Pl5fLixYjMWY. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.0.101' (ECDSA) to the list of known hosts. Serverworld@10.0.0.101's password: id_rsa 100% 2655 2.6KB/s 00:00 PS C:\Users\serverworld\.ssh> ls Directory: C:\Users\serverworld\.ssh Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/11/30 2:07 2655 id_rsa -a---- 2021/11/30 2:07 173 known_hosts # 確認 PS C:\Users\serverworld\.ssh> ssh Serverworld@10.0.0.101 hostname Enter passphrase for key 'C:\Users\serverworld/.ssh/id_rsa': # 設定したパスフレーズ RX-7 # 認証できた |
[3] | なお、鍵ペア認証にした場合、以下のように SSH サーバー側でパスワード認証を禁止すると、よりセキュアな環境とすることができます。 |
PowerShell Copyright (C) Microsoft Corporation. All rights reserved. # パスワード認証不可に変更 PS C:\Users\Administrator> (Get-Content C:\ProgramData\ssh\sshd_config).Replace("#PasswordAuthentication yes","PasswordAuthentication no") | Set-Content C:\ProgramData\ssh\sshd_config PS C:\Users\Administrator> Restart-Service -Name "sshd" |
Sponsored Link |