・WindowsServer 2019 せっかくなので、試してみたいですよね^^「SSH 接続」。
・Windows Server 2019 へ「OpenSSH サーバー」をインストールする手順です。
・さらに鍵認証SSH 接続を導入するまでの手順を分かり易く。
Windows Server 2019 へ
鍵認証を使ってSSH 接続する。
Contents
サーバーの準備
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 の中にユーザーの生成した公開鍵の内容と同じ記述のものが含まれるというニュアンスです。
「鍵認証」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
接続できました。
接続すると、コンソールに接続先が表示されます。
認証は秘密鍵で行っているので、パスワードも聞かれません。
パスワード認証を無効化
鍵認証による接続が確認できたら、パスワードによるログイン認証を無効化しておくと、よりセキュアです。
パスワードさえ分かればだれでもログインできるという状況が防げるとともに、
自分だけが鍵ファイルを使ってログインできるという状況です。
先ほどのサーバーの手順で修正した C:\ProgramData\ssh 内の「sshd.config」にて、
PasswordAuthentication を「no」に設定します。
sshd.config ファイルを管理者権限で起動したテキストエディタで開きます。
コメントアウトの「#」を外して、値を「no」へ変更して保存。
鍵認証SSH の設定は 以上です。
ピンバック: Windows Server 2019 でSSH ポートフォワーディング(トンネリング)を使ったリモートデスクトップ接続について。 - .zapping
ピンバック: Windows で SSH 接続する時のまとめ。Windows 10、Windows Server 2016、2019 - .zapping