メニュー 閉じる

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

・Windows Server 2019 へ「OpenSSH サーバー」をインストールする手順です。

・さらに鍵認証SSH 接続を導入するまでの手順です。

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

サーバーの準備

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

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

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

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

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

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

コンフィグを一部修正

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

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

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

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

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

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd を再起動します。

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

鍵認証SSH 接続の設定

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

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

鍵を作成する。

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 がある場合や、複数の公開鍵を登録したい場合は、公開鍵の内容を追記します。

せ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

接続できました。

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

パスワード認証を無効化

鍵認証接続が成功したら、パスワード認証を無効化しておきます。

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

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

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

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

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

Posted in WindowsServer

関連投稿

2件のコメント

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

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

コメントを残す

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