SSHとは?
Secure Shellの略称でリモート通信するためのプロトコルです。
ネットワーク上の通信が暗号化されるため安全な通信が可能となります。
動作環境
クライアント
エディション | Windows 11 Home |
バージョン | 21H2 |
サーバー
VMware | Windows Server2019 |
前提条件
SSH接続するためにクライアントと接続先のサーバーを用意します。
サーバーはVMwareにて仮想マシンを作成、OSはWindows Server2019を使用します。
OpenSSHをインストール
PowerShellでクライアントとサーバーにOpenSSHをインストールしていきます。
![](https://tokuty.com/wp-content/uploads/cocoon-resources/blog-card-cache/62becbf9e66edbd7a674a2191e28faef.png)
クライアントにインストール
OpenSSH.Clientのインストールの確認
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-44.png?resize=1024%2C287&ssl=1)
OpenSSH.ClientのStateがInstalledになっていたらクライアントにOpenSSHがインストールされているため問題ないです。最近のWindowsはデフォルトインストールとなっているようです。
インストールされていない場合はPowerShellで以下のコマンドを実行
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
サーバーにインストール
OpenSSH.Serverのインストール確認後にインストールされていなければ以下のコマンドを入力
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-55.png?resize=857%2C425&ssl=1)
以下の内容表示が出ていればインストール完了しています。
Path :
Online : True
RestartNeeded : False
SSHサーバーを起動する
SSHサーバーを起動
Start-Service sshd
スタートアップの種類が手動の場合、サーバーを再起動したときにServiceが立ち上がらないので自動起動に変更しておく
自動起動に変更
Set-Service -Name sshd -StartupType 'Automatic'
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-56-1.png?resize=857%2C148&ssl=1)
OpenSSHの起動とスタートアップの種類が自動起動に変更されているかの確認
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-58.png?resize=817%2C658&ssl=1)
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-57.png?resize=1022%2C723&ssl=1)
クライアントとサーバーの疎通確認
pingが通るように設定を変更する
セキュリティが強化された Windows Defender ファイアーウォール
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-48.png?resize=1024%2C838&ssl=1)
ファイルとプリンターの共有(エコー要求 – ICMPv4受信)
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-49.png?resize=1024%2C824&ssl=1)
有効にチェックを入れてOK
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-53.png?resize=432%2C545&ssl=1)
サーバーのipアドレスを調べる
ipconfig/all
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-46.png?resize=976%2C635&ssl=1)
クライアントとサーバーの疎通確認
ping 192.168.19.131
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-54.png?resize=1024%2C335&ssl=1)
クライアントで公開鍵と秘密鍵を作成する
公開鍵と秘密鍵を作成する
現在ログインしているユーザーで.sshフォルダを作成する。
mkdir C:\Users\takus\.ssh
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-60.png?resize=1024%2C100&ssl=1)
.sshフォルダ内に移動
mkdir C:\Users\takus\.ssh
.sshフォルダ内で公開鍵と秘密鍵を生成する
ssh-keygen
今回はオプション指定なしで生成します。 ※要件によって変更してください。
オプション指定なしだとrsaの3072bitで作成されます
以下の入力項目は全て「Enter」を押下する
鍵の保存先フォルダの設定 Enter file in which to save the key (C:\Users\takus/.ssh/id_rsa):
鍵に対してパスワードを設定する Enter passphrase (empty for no passphrase):
Enter same passphrase again:
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-59.png?resize=1024%2C533&ssl=1)
公開鍵と秘密鍵が生成されているかの確認
id_rsa.pub:公開鍵
id_rsa:秘密鍵
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-61.png?resize=1024%2C327&ssl=1)
暗号化方式について
Mody氏は最終的に、実装や互換性を重視する場合は公開鍵の鍵長が2048bitもしくは4096bitのRSAを、パフォーマンスやセキュリティを重視する場合はEdDSAを推奨。DSAやECDSAは使わないように呼びかけています。
https://gigazine.net/news/20200828-ssh-encryption-algorithm/
![](https://tokuty.com/wp-content/uploads/cocoon-resources/blog-card-cache/7f9e10b5cc1b5e9708105068f1443cba.jpg)
サーバーにSSHの鍵を送信する
サーバーで.sshフォルダを作成した後に移動
mkdir .ssh
cd .ssh
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-62.png?resize=976%2C224&ssl=1)
クライアントで作成した公開鍵をサーバーに送信する
scp id_rsa.pub Administrator@192.168.19.131:C:\Users\Administrator\.ssh
初回の送信時はフィンガープリントの生成要否を聞かれます。これは「yes」にしましょう。
なりすまし攻撃の対策です。フィンガープリントを生成すると2回目以降の接続時に公開鍵が初回と異なる場合にエラーメッセージが表示され、接続できなくなります。
The authenticity of host ‘192.168.19.131 (192.168.19.131)’ can’t be established.
ECDSA key fingerprint is SHA256:3d4532Rm2qIvyOXKerAQMrtmXPlH22tDmWpjl5i+VPg.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
サーバーのパスワードを入力する
Administrator@192.168.19.131’s password:
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-64.png?resize=1024%2C202&ssl=1)
サーバーに公開鍵が送信されているかの確認
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-66.png?resize=782%2C159&ssl=1)
サーバーにSSHの鍵を登録する
公開鍵の登録を行います。.sshフォルダを作成
cd C:\Users\Administrator\.ssh\
authorized_keysに公開鍵を登録する
type id_rsa.pub >> authorized_keys
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-75.png?resize=976%2C192&ssl=1)
サーバーにSSH接続をする
パスワード認証
パスワード認証でSSH接続をする
ssh Administrator@192.168.19.131
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-67.png?resize=1024%2C122&ssl=1)
サーバーのパスワードを入力する
Administrator@192.168.19.131’s password:
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-68.png?resize=1024%2C136&ssl=1)
SSH接続成功!
公開鍵認証
サーバーのC:\ProgramData\ssh\sshd_configを編集していきます。
①パスワード認証を禁止にするためコメントを外してnoに変更
Password Authentication no
②administrators_authorized_keysを読み込まないようにコメントアウト
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
sshd_configを変更した後はSSHサーバーを再起動する。
restart-service sshd
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-71.png?resize=859%2C131&ssl=1)
公開鍵認証方式でSSH接続
ssh Administrator@192.168.19.131
![](https://i0.wp.com/tokuty.com/wp-content/uploads/2022/12/image-76.png?resize=1024%2C147&ssl=1)
SSH接続成功!