コンテンツへスキップ

Windows Server 2019 へ OpenSSH をインストール。鍵認証を使ってSSH 接続する。

  • WindowsServer 2019 せっかくなので、試してみたいですよね^^「SSH 接続」。
  • Windows Server 2019 へ「OpenSSH サーバー」をインストールする手順です。
  • さらに鍵認証SSH 接続を導入するまでの手順。

Windows Server 2019 へ
鍵認証を使ってSSH 接続する。

サーバーの準備

接続される側は、「OpenSSH サーバー」の機能をインストールして、
「sshd」サービスを有効にしておく必要があります。

OpenSSH サーバーのインストール

Windows ロゴマーク > 設定 >アプリ >アプリと機能 >オプション機能の管理 > 機能の追加 から、

「OpenSSH サーバー」をインストール。

図1: 「設定」→「アプリ」→「オプション機能の管理」→「機能の追加」から「OpenSSH サーバー」をインストールしているところ。
図1: 「設定」→「アプリ」→「オプション機能の管理」→「機能の追加」から「OpenSSH サーバー」をインストールしているところ。

インストールされたら、サービス「sshd」が追加されているので起動。

図2: サービス一覧で「sshd」を右クリックして「開始」。これでOpenSSH サーバーが起動する。
図2: サービス一覧で「sshd」を右クリックして「開始」。これでOpenSSH サーバーが起動する。
ファイアウォールの確認

Windows Defender ファイアウォールで、
OpenSSH サーバー用の受信規則が追加されているのを確認。

有効になっていなかったら、有効にしましょう。

図3: Windows Defender ファイアウォールの受信の規則に「OpenSSH SSH Server (sshd)」が追加されて、有効になっているのを確認。
図3: Windows Defender ファイアウォールの受信の規則に「OpenSSH SSH Server (sshd)」が追加されて、有効になっているのを確認。
図4: 「OpenSSH SSH Server (sshd)」のプロパティ。有効になっていて「接続を許可する」が選ばれている。
図4: 「OpenSSH SSH Server (sshd)」のプロパティ。有効になっていて「接続を許可する」が選ばれている。

コンフィグを一部修正

C:\ProgramData\ssh 内の「sshd.config」を修正します。

修正には管理者権限が必要なので、テキストエディタは管理者として実行しましょう。

図5: 「C:\ProgramData\ssh」フォルダの中にある「sshd_config」ファイル。これを編集していく。
図5: 「C:\ProgramData\ssh」フォルダの中にある「sshd_config」ファイル。これを編集していく。

sshd.config を開いたら、
下の方までスクロールして、枠で囲った2行に「#」をつけてコメントアウトする。

図6: sshd_config を管理者権限のNotepad++で開いて、「Match Group administrators」とその下の「AuthorizedKeysFile」の行を「#」でコメントアウト。
図6: sshd_config を管理者権限のNotepad++で開いて、「Match Group administrators」とその下の「AuthorizedKeysFile」の行を「#」でコメントアウト。

管理者の鍵も確認してね。というコンフィグなんですが、
この一文のせいで「ファイルが開けない」旨のエラーが出て鍵を使ったSSH 接続が失敗します。
しかも、ログでエラーを出力しないとわからないという。

簡単な対策として、コメントアウトしておきます。

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd を再起動します。

サーバーの設定を何か変更するたびに再起動しましょう。

図7: サービス一覧で「sshd」を右クリックして「再起動」。設定を変えたら再起動を忘れずに。
図7: サービス一覧で「sshd」を右クリックして「再起動」。設定を変えたら再起動を忘れずに。

鍵認証SSH 接続の設定

  1. 暗号鍵(公開鍵、秘密鍵)を生成。(ユーザーの端末で実施)
  2. 公開鍵を登録。(ユーザー側で実施)

■ 「公開鍵」登録のイメージ

図8: 公開鍵・秘密鍵とauthorized_keysの関係を表したイメージ図。サーバー側のauthorized_keysの中身とユーザー側の公開鍵の内容が「同じ」になっていればOK。
図8: 公開鍵・秘密鍵とauthorized_keysの関係を表したイメージ図。サーバー側のauthorized_keysの中身とユーザー側の公開鍵の内容が「同じ」になっていればOK。

※公開鍵とauthorized_keys が「同じ」というのは、 authorized_keys の中にユーザーの生成した公開鍵の内容と同じ記述のものが含まれるというニュアンスです。

「鍵認証」SSH ログインの設定手順(クライアント側)

鍵を作成する。

SSH 接続するクライアントでPower Shell か、コマンドプロンプトを起動し、
以下を実行して「公開鍵と秘密鍵」を作成します。
※OpenSSH がインストールされて、有効である必要があります。

確認:

コマンドプロンプトを起動。手始めにSSH が有効なことを確認。
ssh と入力して、下記の様なレスポンスがあればOK です。

C:\Users\koti_>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

C:\Users\koti_>

ssh が有効なら下記のコマンドを実行。

ssh-keygen -t rsa -b 4096

コマンドの詳細についてはこちら。

暗号鍵( 秘密鍵 と 公開鍵 )を生成する。ssh-keygen コマンドのオプションについて。

コマンド実行例:

Enter file in which to save the key、Enter passphrase は空白のままエンターキーを押してます。
※デフォルトのファイル名、パスワードなしの鍵になります。

C:\Users\koti_>ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\koti_/.ssh/id_rsa): そのままエンター。
Created directory 'C:\Users\koti_/.ssh'.
Enter passphrase (empty for no passphrase): そのままエンター。
Enter same passphrase again: そのままエンター。
Your identification has been saved in C:\Users\koti_/.ssh/id_rsa.
Your public key has been saved in C:\Users\koti_/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:SJrV8ISSsCxYBM1MJ6HCc5oo+nsgcEnjwc3R/viOtKs koti_@DESKTOP-SDCIRDC
The key's randomart image is:
+---[RSA 4096]----+
|.OB=o+...        |
|o+O+= o=         |
|==o= oo o        |
|+.O  =..         |
|++  o .oS        |
|+ .   . .        |
|.. .  ..         |
| .  .. o.        |
|  ooE.+o.        |
+----[SHA256]-----+

C:\Users\koti_>

公開鍵 の登録

クライアントから下記の様なスクリプトを実行します。

結果として、サーバー上のユーザーフォルダに「.ssh」フォルダができて、その中に先ほど生成した公開鍵を「authorized_keys」という名前に変更して置けていれば何でもOK です。

※既に他の端末で登録した authorized_keys がある場合や、
複数の公開鍵を登録したい場合は、公開鍵の内容をauthorized_keys へ追記していきます。

ssh uniuni@192.168.3.29 "mkdir .ssh"
scp .ssh/id_rsa.pub uniuni@192.168.3.29:/Users/uniuni/.ssh/authorized_keys

ユーザーからシェルで行っていますが、サーバーにログインして、GUI を使って作業してもOK です。

パスワードを2回聞かれてしまうは、なんかイケてないというか・・・^^;
(※できればパスワードは1回だけで処理したいのですが、私にはこれが限界でした。)

PS C:\Users\koti_> ssh uniuni@192.168.3.29 "mkdir .ssh"
uniuni@192.168.3.29's password: パスワード
PS C:\Users\koti_> scp .ssh/id_rsa.pub uniuni@192.168.3.29:/Users/uniuni/.ssh/authorized_k
eys
uniuni@192.168.3.29's password: パスワード
id_rsa.pub                                              100%  748    68.0KB/s   00:00
PS C:\Users\koti_>

パスワード は入力しても表示されないので心の目で見て下さい。

接続確認

秘密鍵でSSH 接続。

下記の構文でSSH 接続します。

ssh -i <秘密鍵ファイルの場所><ファイル名> <ログインユーザー名>@<サーバーアドレス>

実行例:

ssh -i .ssh/id_rsa uniuni@192.168.3.29
図9: PowerShellで「ssh -i .ssh/id_rsa uniuni@192.168.3.29」を実行して、秘密鍵を指定して接続を試みているところ。
図9: PowerShellで「ssh -i .ssh/id_rsa uniuni@192.168.3.29」を実行して、秘密鍵を指定して接続を試みているところ。

接続できました。

図10: 接続成功。サーバー側のコマンドプロンプトが表示された。
図10: 接続成功。サーバー側のコマンドプロンプトが表示された。

接続すると、コンソールに接続先が表示されます。
認証は秘密鍵で行っているので、パスワードも聞かれません。

図11: 接続先のプロンプト「uniuni@WIN-4OJFJMO5BPO」が表示されている様子。鍵認証なのでパスワードは聞かれない。
図11: 接続先のプロンプト「uniuni@WIN-4OJFJMO5BPO」が表示されている様子。鍵認証なのでパスワードは聞かれない。

パスワード認証を無効化

鍵認証による接続が確認できたら、パスワードによるログイン認証を無効化しておくと、よりセキュアです。

パスワードさえ分かればだれでもログインできるという状況が防げるとともに、
自分だけが鍵ファイルを使ってログインできるという状況です。

先ほどのサーバーの手順で修正した C:\ProgramData\ssh 内の「sshd.config」にて、
PasswordAuthentication を「no」に設定します。

sshd.config ファイルを管理者権限で起動したテキストエディタで開きます。

図12: sshd_config の「#PasswordAuthentication yes」の行。これから「no」に書き換える。
図12: sshd_config の「#PasswordAuthentication yes」の行。これから「no」に書き換える。

コメントアウトの「#」を外して、値を「no」へ変更して保存。

図13: 「#」を外して「PasswordAuthentication no」に変更して保存したところ。
図13: 「#」を外して「PasswordAuthentication no」に変更して保存したところ。

鍵認証SSH の設定は 以上です。

(Visited 11,909 times, 1 visits today)
固定ページ: 1 2
タグ:

「Windows Server 2019 へ OpenSSH をインストール。鍵認証を使ってSSH 接続する。」への2件のフィードバック

  1. ピンバック: Windows Server 2019 でSSH ポートフォワーディング(トンネリング)を使ったリモートデスクトップ接続について。 - .zapping

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

コメントを残す

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