- Windows Server 2016 でも「OpenSSH」をインストールする方法です。
- WindowsServer2016 で鍵認証 SSH 接続するための設定方法について。
WindowsServer 2016 にsshd をインストールして鍵認証 SSH 接続ができるようにする。
SSH 接続が出来るまで。
- OpenSSH をダウンロードして、インストールする。
主にサーバー側で、「ビルドイン-Administrator(※)」で作業しています。
※: Administrators グループでは上手く行きませんでした。
OpenSSH のインストール
ビルドインの Administrator で作業します。
WindowsServer2016 はOpenSSH が同梱されていないので、
下記サイトからダウンロードしてインストールします。
このサイト。
https://github.com/PowerShell/Win32-OpenSSH/releases
Windows 向けっぽい、このファイルをダウンロードします。
ダウンロードした「OpenSSH-Win64.zip」を解凍。
解凍したフォルダを適当な場所に配置。
解凍したフォルダを適当な場所に配置したら、環境変数「PATH」に保存した場所(フォルダパス)を追加します。
システム環境変数の方に追加しました。
「install-sshd.ps1」を実行して、sshd をインストールする。
解凍したフォルダ内でPowerShell を管理者として開く。
- エクスプローラーの左上のメニュー「ファイル」をクリック。
- 「Widows PowerShellを開く」の右向き三角
- 「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 接続する為の設定手順。
- 暗号鍵(公開鍵、秘密鍵)を生成。(ユーザーの端末で実施)
- 公開鍵を登録。(ユーザー側で実施)
- コンフィグを修正。(サーバーの管理者で実施)
暗号鍵(公開鍵、秘密鍵)を生成。
ユーザー側でキーを生成する。
例: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 フォルダにデバックレベルのログが生成されるので、
確認して原因を特定しましょう。
エラーメッセージでググれば、何かしら情報はあるはず。
以上です。
ピンバック: Windows で SSH 接続する時のまとめ。Windows 10、Windows Server 2016、2019 - .zapping
ピンバック: githubからのOpenSSHインストールするときのエラー対処 – 勉強メモ