コンテンツへスキップ

WindowsServer 2016 にsshd をインストールして鍵認証 SSH 接続ができるようにする。

  • Windows Server 2016 でも「OpenSSH」をインストールする方法です。
  • WindowsServer2016 で鍵認証 SSH 接続するための設定方法について。

WindowsServer 2016 にsshd をインストールして鍵認証 SSH 接続ができるようにする。

SSH 接続が出来るまで。

  1. OpenSSH をダウンロードして、インストールする。

主にサーバー側で、「ビルドイン-Administrator(※)」で作業しています。

※: Administrators グループでは上手く行きませんでした。

OpenSSH のインストール

ビルドインの Administrator で作業します。

WindowsServer2016 はOpenSSH が同梱されていないので、
下記サイトからダウンロードしてインストールします。

このサイト。

https://github.com/PowerShell/Win32-OpenSSH/releases

Windows 向けっぽい、このファイルをダウンロードします。

ダウンロードした「OpenSSH-Win64.zip」を解凍。

解凍したフォルダを適当な場所に配置。

解凍したフォルダを適当な場所に配置したら、環境変数「PATH」に保存した場所(フォルダパス)を追加します。

システム環境変数の方に追加しました。

「install-sshd.ps1」を実行して、sshd をインストールする。


解凍したフォルダ内でPowerShell を管理者として開く。

  1. エクスプローラーの左上のメニュー「ファイル」をクリック。
  2. 「Widows PowerShellを開く」の右向き三角
  3. 「Widows PowerShell 管理者として開く」

PowerShell で「install-sshd.ps1」を実行します。

install-sshd.ps1

この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル C:\Users\uniuni\OpenSSH-Win64\install-sshd.ps1 の発行元は
CN=MicrosoftCorporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US であり、
このシステムで信頼されていません。信頼された発行元からのスクリプトのみを実行してください。
[V] 常に実行しない(V) [D] 実行しない(D) [R] 一度だけ実行する(R) [A] 常に実行する(A)
[?] ヘルプ(既定値は “D”):

この問いかけには自己判断で「R」等の回答をしてください。

サービスを開いて確認。sshd が登録されています。

Windows ロゴマーク + 【X】キーを押してメニューを開き、
「タスクマネージャー」をクリックします。

タスクマネージャーが開いたら、サービスタブに切り替えます。

(サービスタブが出ていない時は「詳細」をクリックします。)

ステータスが「停止」になっているので、右クリック >「開始」 を押して「実行中」にします。

この時点で、Windows ユーザーパスワードによるSSH 接続ができるようになっています。

接続テスト

接続テストをする前に、SSH 接続に使うポート「22」番を「アクセス可能」にしておきましょう。

具体的には、ファイアーウォールでブロックされないようにアクセス許可するルールを追加します。

Windows 10 のPowerShell から。

Raspberry Pi OS からSSH 接続。

秘密鍵を使ってSSH ログインしよう。

秘密鍵でアクセスする為の条件。


一般的には、下記の構図になっていれば、OK です。
authorized_keys には複数の公開鍵の内容を記入でき、そのうちの一つが秘密鍵とペアになっていれば認証されます。

・ユーザーが振り出した秘密鍵と、公開鍵のうち、公開鍵の内容が、
ログイン先のユーザーのホームディレクトリ/.ssh フォルダ内の「authorized_keys」内に記述されている。

・ユーザーは上記の公開鍵とペアの秘密鍵を指定してログインする。

秘密鍵でSSH 接続する為の設定手順。

  1. 暗号鍵(公開鍵、秘密鍵)を生成。(ユーザーの端末で実施)
  2. 公開鍵を登録。(ユーザー側で実施)
  3. コンフィグを修正。(サーバーの管理者で実施)

暗号鍵(公開鍵、秘密鍵)を生成。

ユーザー側でキーを生成する。

例:Raspberry Pi OS を使用しています。Windows でも同様のコマンドです。

鍵生成のコマンドについて

ssh-keygen -t rsa -b 4096

途中で3回入力を求められますが、そのままエンターを押しています。
※「空のまま【ENTER】キー」の箇所

A:生成するキーの名前を指定する場合。 →デフォルト名になる。
B、C:秘密鍵用のパスワード →パスワード無しになる。

uniuni@beccou-server:~ $ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/uniuni/.ssh/id_rsa): (A)空のまま【ENTER】キー
Created directory '/home/uniuni/.ssh'.
Enter passphrase (empty for no passphrase): (B)空のまま【ENTER】キー
Enter same passphrase again: (C)空のまま【ENTER】キー
Your identification has been saved in /home/uniuni/.ssh/id_rsa.
Your public key has been saved in /home/uniuni/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:TSU57JX6AxrN7Hvci9Birz96Qc1d58FFxFAfz111k/0 uniuni@beccou-server
The key's randomart image is:
+---[RSA 4096]----+
|         .....oO&|
|          +oo  =&|
|         =.+ o oX|
|        .oB . o E|
|        S+.+     |
|        . ..+    |
|          +o.+   |
|         ..+=..  |
|          o*+... |
+----[SHA256]-----+
uniuni@beccou-server:~ $ 

公開鍵を登録。

サーバーへ公開鍵を登録する。

生成した鍵のうち、公開鍵( .pub)の方をサーバーへ送信します。
サーバーに送信する際に同時に「authorized_keys」にリネームしています。

※既に他の端末で作成した 「authorized_keys」 がサーバーにある場合は、公開鍵の内容を追記してください。

手順

■ 一旦、サーバー上にフォルダを作成。

ssh <ユーザー名>@<サーバー名> “mkdir .ssh”

ssh uniuni@192.168.3.161 "mkdir .ssh"

■ 公開鍵をauthorized_keys として複製する。

scp <公開鍵ファイル.pub を指定> <ユーザー名>@<サーバー名>:/<ユーザーのフォルダ>/.ssh/authorized_keys

scp .ssh/id_rsa.pub uniuni@192.168.3.161:/Users/uniuni/.ssh/authorized_keys

複製されていることを確認。
※サーバーに対象のユーザーでログインして、自分のフォルダを確認しています。

複数の公開鍵を登録する場合は既存のauthorized_keys に「追記」して下さい。
(SSH ログインする端末が複数あって、その端末毎に違う鍵を使用している場合など。)

例:

scp .ssh/id_rsa.pub uniuni@192.168.3.161:/Users/uniuni/
ssh uniuni@192.168.3.161 "type id_rsa.pub >> .ssh/authorized_keys"

Windows に「鍵」を登録する場合は、今のところ特に制限もないので、自由にやってOK です。

コンフィグを修正。

SSH 接続のコンフィグを一部変更します。

 “C:\ProgramData\ssh\sshd_config” を開いて、以下のコンフィグ設定をコメントアウトします。

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

ついでに下記のコンフィグ設定を追加しておくと、パスワードを使ったSSH ログインを禁止できます。

PasswordAuthentication no

下記の要領で、秘密鍵を指定してSSH ログインを実行。
※「-i .ssh/id_rsa」が秘密鍵を指定している個所です。

パスワード無しでログインできればOK です。
(鍵認証にパスワードを設定していない場合。)

鍵認証による SSH 接続がうまく行かない時。

ログを見てデバックします。

sshd_config ファイルに以下の設定を追記します。

“C:\ProgramData\ssh\sshd_config”

SyslogFacility LOCAL0
LogLevel DEBUG

C:\ProgramData\ssh\logs フォルダにデバックレベルのログが生成されるので、
確認して原因を特定しましょう。

エラーメッセージでググれば、何かしら情報はあるはず。

以上です。

(Visited 4,461 times, 5 visits today)

「WindowsServer 2016 にsshd をインストールして鍵認証 SSH 接続ができるようにする。」への2件のフィードバック

  1. ピンバック: Windows で SSH 接続する時のまとめ。Windows 10、Windows Server 2016、2019 - .zapping

  2. ピンバック: githubからのOpenSSHインストールするときのエラー対処 – 勉強メモ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です