Windows 2016
Sponsored Link

OpenSSH : SSH鍵ペア認証2019/03/04

 
SSH クライアント用の秘密鍵と SSH サーバー用の公開鍵の鍵ペアを作成し、鍵ペアによる認証でログインできるようにします。
[1]
デフォルト設定では [Administrators] グループのみ、公開鍵 (authorized_keys) の場所が OpenSSH デフォルトの [.ssh\authorized_keys] ではなく、 以下のパス/ファイル名に設定されているため注意です。もし、全ユーザーで設定を合わせたい場合は、事前に、管理者権限で設定ファイルの最終 2行をコメントにしてサービスを再起動しておく必要があります。
⇒ 設定ファイル [C:\ProgramData\ssh\sshd_config]
[2]
SSH 鍵ペアを作成したい任意のユーザーでログオンして設定します。
以下のように [ssh-keygen] コマンドで鍵ペアを生成します。
コマンド実行後、ホームフォルダー配下に [.ssh] フォルダーが作成され、その配下に鍵ペアが生成されます。
PS > ssh-keygen
[3]
[.ssh] フォルダーへ移動し、公開鍵のファイル名を [authorized_keys] にリネームします。
[1] に記載した通り、Windows OpenSSH デフォルト設定のままの場合 且つ [Administrators] グループ所属の場合は [authorized_keys] ではなくファイル名が異なるため注意です。
PS > cd .ssh
PS > mv id_rsa.pub authorized_keys
[4]
公開鍵 [authorized_keys] のアクセス権を変更しておきます。
デフォルトで Everyone に読み取り権限が付加されますが、これがあると SSH 鍵認証が通らないため、削除します。
PS > icacls authorized_keys /remove Everyone
SSH サーバー側の設定は以上です。次は接続元の SSH クライアントホストに移動します。
[5]
接続元の SSH クライアントホスト上で SSH 秘密鍵を設定したいユーザーでログオンし、PowerShell またはコマンドプロンプトを起動します。
その後、ホームフォルダー直下に [.ssh] フォルダーを作成し、その配下に SSH サーバー側から秘密鍵を転送します。 SSH サーバーへの接続は現時点ではパスワードでの認証となります。
PS > mkdir .ssh
PS > cd .ssh
PS > sftp (ユーザー名)@(SSHサーバーのホスト名 または IPアドレス)
sftp > cd .ssh
sftp > get id_rsa
sftp > exit
[6]
以上で準備完了です。SSH サーバーへ SSH 接続してパスワード入力不要でログインできることを確認します。 (鍵の生成時にパスフレーズを設定した場合は、パスフレーズの入力は求められます)
PS > ssh (ユーザー名)@(SSHサーバーのホスト名 または IPアドレス)
[7] Linux ホストへ秘密鍵を転送すれば Linux ホストからも SSH 鍵ペアでの認証が可能です。
関連コンテンツ