Win ssh サーバ設定 @PowerShell

2024/03/28 00:09 OS別::Windowsその他::技術情報
Windows のバージョンごとに設定手順が変更されることがあるため、汎用的に利用できる PowerShell での設定方法を記載します。


確認環境

実際に動作を確認した環境は、以下の通りです。
Version 情報(23H2)
Version 情報(23H2)

ただし、想定する対象としては、Windows Server 2022, Windows Server 2019, Windows 11, Windows 10 (Microsoft 公式情報より)になります。

PowerShell 起動(管理者モード)

システムへの変更を行うため、管理者モードで PowerShell を起動します。

管理者モードで起動

Win キーを押し、そのまま power shell と入力します。

検索結果に Windows PowerShell が表示されたら、「管理者として実行する」を選択します。
PowerShell 起動
PowerShell 起動

このとき、ユーザアカウント制御が表示された場合は「はい」を押して続けます。

起動確認

タイトルバーに「管理者:Windows PowerShell」が表示された画面が起動することを確認します。
PowerShell 管理者モード
PowerShell 管理者モード

sshd インストール

対象バージョン名称確認

インストールする PowerShell のバージョン情報を表示します。
PS C:\WINDOWS\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
OpenSSH バージョン確認
OpenSSH バージョン確認

画像では見辛いですが、以下のように表示されることを確認します。
PS C:\WINDOWS\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'


Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : Installed



PS C:\WINDOWS\system32>

インストール

次のコマンドを実行します。
PS C:\WINDOWS\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
インストール画面
しばらく、CUI 上にインストール状況が表示されます。
OpenSSH インストール中
OpenSSH インストール中
インストール結果画面
続けて、OpenSSH がインストールされたことを確認します。
PS C:\WINDOWS\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
OpenSSH インストール結果
OpenSSH インストール結果
画面上に、以下のように Online: True が表示されます。
PS C:\WINDOWS\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


Path          :
Online        : True
RestartNeeded : False



PS C:\WINDOWS\system32>

サーバ設定

サービス起動

sshd サービスを起動します。
PS C:\WINDOWS\system32> Start-Service sshd

サービス自動起動

sshd サービスを、自動起動するよう設定変更します。
PS C:\WINDOWS\system32> Set-Service -Name sshd -StartupType 'Automatic'

余談(スタートアップの種類を変更)

ちなみに、以下のコマンドでサービスの停止やスタートアップの種類を変更できます。
サービス停止
PS C:\WINDOWS\system32> Stop-Service -Name sshd
※ sshd は、中断と再開をサポートしていないため、中断できないようです。
スタートアップの種類
「自動」の場合
PS C:\WINDOWS\system32> Set-Service -Name sshd -StartupType Automatic
「手動」の場合
PS C:\WINDOWS\system32> Set-Service -Name sshd -StartupType Manual
「無効」の場合
PS C:\WINDOWS\system32> Set-Service -Name sshd -StartupType Disabled

Firewall

必要に応じて、ファイアウォール設定を行います。
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

鍵の生成

鍵を生成するには、以下のコマンドを実行します。
ssh-keygen -t ed25519
※ 記事の作成時点では、rsa より ed25519 が推奨されています。適切に指定してください。

実行例
PS C:\WINDOWS\system32> ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\test/.ssh/id_ed25519):
Created directory 'C:\\Users\\test/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\test/.ssh/id_ed25519
Your public key has been saved in C:\Users\test/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:vNdhiYXL3ci1SDWYKf+pv2SOLiXSdDBWWFCKsNJzlk0 test@Win100
The key's randomart image is:
+--[ED25519 256]--+
|      .   E*++o  |
|     . o =*o+. . |
|    . + =.+=o .  |
|     . = ..Bo* . |
|        So+.O.o. |
|        ..oo..o  |
|        ...o..o  |
|         .. .=   |
|           oo.+. |
+----[SHA256]-----+
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> dir C:\Users\test\.ssh\


    ディレクトリ: C:\Users\test\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/27     23:29            399 id_ed25519
-a----        2024/03/27     23:29             95 id_ed25519.pub


PS C:\WINDOWS\system32>
公開鍵 id_ed25519.pub を、リモートアクセスしたい相手側サーバに適切に設定すると、鍵を利用した ssh 接続が可能になります。

公開鍵の格納先

Windows でも Linux でも、id_ed25519.pub の内容を、そのまま全部、1行で authorized_keys ファイルに記載してください。
公開鍵は「公開してしまう鍵」なので、ファイルを開いてコピペするなど、多少雑に扱っても問題ありません。
Windows ssh サーバ
sshd サービスが動いている Windows サーバの、ユーザプロファイル直下に .ssh フォルダを作成して配置します。

例として、test ユーザのユーザプロファイル情報を表示します。
PS C:\WINDOWS\system32> echo $env:USERPROFILE\.ssh\
C:\Users\test\.ssh\
PS C:\WINDOWS\system32> dir C:\Users\test\.ssh\authorized_keys


    ディレクトリ: C:\Users\test\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/27     23:29             95 authorized_keys


PS C:\WINDOWS\system32>
Linux サーバ
ユーザのホームディレクトリ直下に .ssh ディレクトリを作成して配置します。
例として、test ユーザのホームディレクトリ情報を表示します。
$ test@rasp080:~/.ssh $ ls -ld ~/.ssh
drwx------ 2 test test 4096  3月 27 23:41 /home/test/.ssh
test@raspberry:~/.ssh $
test@raspberry:~/.ssh $ ls -l ~/.ssh/authorized_keys
-rw------- 1 test test 0  3月 27 23:41 /home/test/.ssh/authorized_keys
※ Linux サーバは、特に権限情報が重要視されます。 .ssh ディレクトリは 700 かつ authorized_keys は 600 にしてください。

適切に設定すると、以下のように ssh 接続可能です。
PowerShell 画面から Linux へ ssh 実行
PowerShell 画面から Linux へ ssh 実行

sshd アンインストール

インストールした sshd をアンインストールするには、次のコマンドで実行できます。
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

参考

Win11 SSH サーバ設定 @23H2

2024/03/26 08:19 OS別::Windowsその他::技術情報
Windows 10 での SSH サーバ設定で一度リライトしたのですが、そのバージョンからさらにアップデートすると手順が変更になっていたので、リライトしました。

GUI での説明記事を作成するには、限界を感じてしまいますね。

さて、ssh サーバの説明や接続方法等は別な記事を参照いただくとして、対象のバージョン、手順、起動方法、ログイン確認までを説明範囲とします。

Windows 対象バージョン

設定 選択

スタートメニューを右クリックして「システム」を選択します。
システム
システム

バージョン情報 選択

バージョン情報が表示されます。

表示されているバージョンが今回の記事で利用しているバージョンです。
この場合、Windows11 Pro のバージョンが 23H2 で、OS ビルドが 22631.3296 になります。
バージョン情報
バージョン情報

sshd インストール手順

システム

左ペインから「システム」を選択します。

システム画面が更新されたら、オプション機能を選択します。
「システム」画面
「システム」画面

システム> オプション機能

「オプション機能を追加する」の「機能を表示」を選択します。
「システム > オプション機能」画面
機能を表示

オプション機能を追加する

OpenSSH サーバーを選択して、チェックがついたら「次へ」を選択します。
「オプション機能を追加する」画面
オプション機能を追加する

インストール

追加する機能を確認されるので、OpenSSH サーバーが表示されていることを確認して「インストール」を選択します。
「インストール対象の確認画面
インストール対象確認
OpenSSH サーバーがインストールされるのを待ちます。
インストール中の画面
インストール 待機
インストールされると、インストール済みと表示されます。
もう一度アプリのオプション機能画面を表示して、OpenSSH サーバーがあればインストールされています。
インストールされている機能
インストール確認

sshd 利用

サービス起動手順

OpenSSH サーバーは、サービスとして起動しないと SSH ログインできません。

サービス起動するために、まずスタートメニューを右クリックして「コンピューターの管理」を起動します。

win
コンピューターの管理選択画面
ここから「サービスとアプリケーション」→「サービス」へ移動すると「OpenSSH SSH Server」があります。

サービス選択
サービス選択画面

「OpenSSH SSH Server」をダブルクリックして「OpenSSH Server のプロパティ」を開きます。

まず、サービスが停止していることが分かります。

OpenSSH SSH Server のプロパティ
OpenSSH SSH Server のプロパティ画面
「開始」ボタンをクリックして、サービスを実行しておきます*1

また、Windows を起動したらサービスも起動させたい場合は、「全般」タブの「スタートアップの種類」を「手動」から「自動」に変更して「OK」ボタンをクリックします。

スタートアップの種類選択
スタートアップの種類選択画面

sshd_conf

OpenSSH サーバーとして設定は、以下フォルダの設定ファイルで行います。
%SystemRoot%\System32\OpenSSH
管理者権限でテキストエディタを起動したら sshd_config_default を開いて sshd_config という名前で別名保存します。

コマンドプロンプトを管理者権限で起動すると、簡単にコピーできます。

Win キーを押して cmd を入力し、Ctrl + Shift キーを押しつつ Enter すると、管理者権限でコマンドプロンプトを起動できます。
C:\WINDOWS\system32>cd OpenSSH
C:\Windows\System32\OpenSSH>dir
C:\Windows\System32\OpenSSH>copy sshd_config_default sshd_config
C:\Windows\System32\OpenSSH>notepad sshd_config
C:\Windows\System32\OpenSSH>

アンチウィルスソフト

Norton Internet Security をインストールしていますが、LAN 内の Linux サーバからアクセスする場合、特に何の設定も必要なくアクセスできました。

アクセスできない場合、インストールされているアンチウィルスソフトの設定を確認してみてください。

*1 : プロパティ画面ではなく、サービス選択で「OpenSSH SSH Server」を右クリックして「開始」を選択しても SSH 接続を受け付けるようになります。

ユーザ作成

xxx@hotmail.co.jp のアカウント(いわゆる Microsoft アカウント)では、ssh によるリモートアクセスができません。
ということで、ローカルアカウントの作成が必要です。

ユーザ作成には、システム管理権限のあるユーザが必要です。

Tera Term でアクセスする場合、通常の UNIX / Linux へアクセスするのと手順は同じです。

そのまま localhost:22 へ ssh アクセスすると、通常のログイン処理でアクセス可能です。

Windows11 端末に、管理権限のあるユーザでログインしていることをユーザー作成の前提条件とします。

ローカルアカウント追加

ユーザー作成ですが、開いているタスクマネージャーのメニューからユーザーを選択して、そのままユーザーアカウントの管理をクリックします。
ユーザアカウントの管理

ユーザーアカウントの画面がでたら、別のアカウントの管理を選択します。
別のアカウントの管理

「PC 設定で新しいユーザーを追加」をクリックします。
PC 設定で新しいユーザーを追加

「アカウントの追加」をクリックします。
アカウントの追加

Microsoft アカウント画面が表示されたら「このユーザーのサインイン情報がありません」を選択します。
Microsoft アカウント 1

続いて「Microsoft アカウントを持たないユーザーを追加する」を選択します。
Microsoft アカウント 2

やっとローカルアカウントを作成する画面が表示されるので、必要事項を入力します。
Microsoft アカウント 3

ここでは、サンプルとして test ユーザーを作成します。
まず、ユーザー名とパスワードを入力します。
Microsoft アカウント 情報入力 1

下へスクロールして、パスワードを忘れた場合の質問に回答します。
ここでは、すぐに削除するので x で埋めていますが、忘れた際に必要になります。
Microsoft アカウント 情報入力 2

すべて入力して「次へ」をクリックすると、以下の「ほかのユーザー」画面に戻りますので、ユーザーが作られたことを確認します。

ここで作られたユーザーの「アカウントの種類」は「標準ユーザー」です。
アカウント確認画面

リモートアクセスするユーザーに管理者権限が必要な場合は、別途管理者権限を付与してください。

レビュービルド26052以降であれば、Linux の sudo コマンドと同じコマンドが実装されるとのこと。

Windows11 へ SSH アクセス

Tera Term で Windows 11 に対してアクセスし、先ほど設定したユーザー名およびパスワードを入力すると、Windows 11 のターミナル(ここではデフォルトの cmd.exe を利用)にログインできます。
Tera Term から SSH ログイン
ここでは Raspberry Pi からアクセスしていますが、ローカル (localhost)でもアクセス可能です。


SSHd が動作していれば、Windows 端末の「標準ユーザー」で Tera Term から SSH アクセスが可能です。

パッケージ管理ツール

2024/04/06 01:33 その他::技術情報
いろいろなパッケージ管理ツールについてのまとめになります。

OS

OS に対し、単体のアプリケーションをパッケージとして導入するためのツール群。
単純にアプリケーションをパッケージとしてまとめるものと、そのパッケージが動作するために必要な、依存パッケージも合わせてインストールするためのものとがあります。
種別代表的なコマンド名称備考
LinuxRed Hat 系rpmRedhat Package Manager
yumYellowdog Updater Modifiedrpm の依存関係等をみてインストール可能
dnfDandified Yumyum の後継
Debian 系dpkgDebian Package
apt-getdpkg の依存関係を解決するなど
aptAdvanced Packaging Toolapt-get の後継
MacHomebrewApple 非公式
WindowsWingetMicrosoft 公式。Win10 V2004以降で利用可能
Chocolatey

プログラム系

プログラミング言語が、独自にパッケージ管理を行うものが存在します。
たとえば、その言語を利用するために必要に応じてインストールするライブラリだったり、その言語で動作するアプリケーションだったりします。

Mac の Homebrew で Python をインストールした後、Python で pip を利用する。
そんな使われ方をします。
言語代表的なコマンド名称備考
JavaScript
(Node.js)
npmNode Package Manager
npxNode Package Executer
yarnYet Another Resource Negotiator
PerlcpanComprehensive Perl Archive NetworkPerl モジュール管理ツール
cpanm初期設定不要の Perl モジュール管理ツール*1
PHPComposerライブラリ依存管理ツール
PythonpipPip Installs Packages
RubygemRubyGems
JavaScript のパッケージシステムは、現在 Deno や Vlt といった後継が開発されつつある模様。

Windows SSH サーバ設定

2024/03/28 00:08 OS別::Windowsその他::技術情報
Windows 11 での SSH サーバ設定ですが、Windows 10 と合わせて、ビルド番号ごとにまとめておきます。

Windows 10

以下、Windows 10 での sshd サーバ設定に関する設定手順になります。

Ver.1803

OS ビルド 17134.829 での設定方法です。

Windows 11

以下、Windows 11 での sshd サーバ設定に関する設定手順になります。

Ver.22H2

OS ビルド 22621.1848 での設定方法です。

Ver.23H2

OS ビルド 22631.3296 での設定方法です。

PowerShell

管理者モード

PowerShell を利用した設定方法です。軽く、公開鍵の設定方法も記載しています。