Win10 SSH サーバ設定

2024/03/26 19:38 その他::技術情報

SSH サーバとは

まず、SSH は Secure Shell の略称で、安全なリモートログインを行う上で必要なものになります。

Shell は、シェルと読みます。
コマンドの入力を待ち受けるもので、入力された文字列を OS がコマンド等と解釈して実行します。

シェル自体、リモートから操作を受け付けます。
Web ブラウザでコメントを書いて送ることができますが、仕組みとしては似たようなものです。
ただし、通信内容は保護されていないので、そのままでは覗き見ることができます。

覗き見から通信内容を守るためには、SSL や TLS といった規格で通信を暗号化します。
つまり、シェルを実行する環境がセキュアなのでセキュアシェルであると覚えると良さそうです。

SNS 等にコメントを書く時は Web ブラウザとか専用アプリから該当のサイトを開いて、文字を入力すると思います。
書き込んだ文字列は、インターネットに接続されているコンピュータに送られてデータとして処理されますが、その接続を受け付けているのがサーバです。

この仕組みは SSH でも同じで、ターミナルエミュレータ等で該当のコンピュータへ文字列を送ることができます。

文字列を受け付けるコンピュータがサーバです。
どんな形式で文字列を受け付けるのか……といえば SSH なので、SSH サーバと呼ばれます。

要約すると、覗き見られないように暗号化された通信を使ってコンピュータを操作するサービスを提供しているのが SSH サーバです。
サービスは、英語で Service と書きます。

このサービス(Service)という名詞は、奉仕などの意味を持つ動詞「サーブ(Serv)」から来ています。
昔、サーブ*1するのは、ホスト*2の役割でした。

現代、サーブ専門の人がいて、その人たちを「サーバ(Server)」と言ったりもします。

これらになぞらえて、インターネットでもホストやサービス、サーバ等という名称が使われています。
なお、この Serve の語源はラテン語の「servus」で、意味は 奴隷 だそうです。

UNIX / Linux sshd

UNIX はともかく、Linux の場合は OpenSSH がインストールされていることが多いです。

sshd は、Secure Shell Daemon と呼ばれる、常時アクセスを受けるサーバ側のアプリケーションです。
Daemon は、裏でひっそりと動き、常に仕事をするマクスウェルの悪魔になぞらえて呼ばれたことが始まりで、サービスと同じ意味で使われます。
バックグラウンドプロセスを物理学者ジェームズ・クラーク・マクスウェルが想像で創り出した悪魔になぞらえて、「Daemon」(デーモン)という愛称で呼んだことが始まりとのこと
UNIX/Linuxでよく使われる「Daemon」(デーモン)プロセスの語源とは? - GIGAZINE
Tera Term は sshd というサービスにアクセスするための、クライアントソフトという位置づけです。

Windows 10 OpenSSH Server

標準では無効化されてはいるものの、簡単な設定で利用できる Windows 10 の SSH サーバです。
OpenSSH Server という名前から分かるように、Linux にインストールされている sshd と大差ありません*3

有効にすると、Linux 等と同じように、SSH でのアクセスが可能になります。

Tera Term で Windows 10 の SSH サーバへログインするとコマンドプロンプトになり違和感がありますが、Windows 環境で実行可能な bash を適切にインストールすれば、Windows 環境ながら、いつもながらの操作方法を利用することが可能です。

もちろん、標準でインストールされている Power Shell を利用することも可能です。

*1 : ここでは、お酒や食べ物を提供することをサーブと言っています。

*2 : ここでは、主催者としての意味のホストです。

*3 : 大差ないというか、異なる OS で稼働するように調整された同じものです。

Windows 10 への SSH 接続設定

前提条件 (Windows 10 バージョン)

Windows 10 バージョン 1803 以降で実行可能です。

バージョンを確認するには、Windows キーを押して winver をコマンドとして実行します。

winver
winver 画面

ちなみに、winver 画面は msconfig コマンドを実行するとでてくる「システム構成」の「ツール」タブからでも起動できます。

msconfig tool
msconfig 画面

インストール

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

設定の選択
設定の選択画面

「Windows の設定」で、アプリを選択します。

Windows の設定
Windows の設定画面

※ 実のところ、スタートメニューを右クリックしたときに、「アプリと機能」を選択しても同じ画面に移動できます。

右ペインの「アプリと機能」にある「オプション機能の管理」をクリックします。

アプリと機能
アプリと機能画面

「オプション機能の管理」で、「+機能の追加」をクリックします。

機能の追加選択
機能の追加選択画面

「オプション機能」の「OpenSSH サーバー」をクリックします。

OpenSSH サーバー選択
OpenSSH サーバー選択画面

クリックした「OpenSSH サーバー」が展開されるので「インストール」をクリックします。

インストール確認
インストール確認画面


インストール処理が走って「オプション機能の管理」に戻ります。

オプション機能の管理
オプション機能の管理画面

これで「OpenSSH サーバーの」インストールは完了です。

画面右上の × ボタンをクリックして、画面を閉じます。

設定

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

スタートメニューを右クリックして「コンピューターの管理」を起動します。

ssh-setting-1.png
コンピューターの管理選択画面

ここから「サービスとアプリケーション」→「サービス」へ移動すると「OpenSSH SSH Server」があります。

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

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

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

OpenSSH SSH Server のプロパティ
OpenSSH SSH Server のプロパティ画面

「開始」ボタンをクリックして、サービスを実行しておきます*4

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

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

これで、Windows 10 の OpenSSH サーバー起動設定は完了です。
画面右上の × ボタンをクリックして、画面を閉じます。
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>
ユーザ
普段、私は Windows に xxx@hotmail.co.jp のアカウントを利用してログインしています。
このアカウントでは、ssh によるリモートアクセスができませんでした。

ということで、ローカルアカウントを作成します。

スタートメニューを右クリックしたときにでる「コンピューターの管理」は、すでに起動しているものと思います。
「コンピューターの管理(ローカル)」→「システムツール」→「ローカル ユーザーとグループ」→「ユーザー」と開いていくと、sshd ユーザが自動で作られているのが確認できました。

この「ユーザー」か、「ユーザー」を選択して出てきた右ペインを右クリックすると「新しいユーザー」が出てくるので、これをクリックして ssh 接続するための新しいユーザーを追加します。

RDP だと、Administrators グループまたはリモートデスクトップユーザーグループに追加しなければなりません。
ここで作成したアカウントは Administrators グループに入れてしまいましたが、OpenSSH でのアクセスの場合はユーザー登録だけで良いようです(未確認)。

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

Windows 10 への SSH 接続

接続

Tera Term でアクセスする場合、通常の UNIX / Linux と同じです。
自端末
localhost (127.0.0.1) でポート 22 へアクセスすると、UNIX や Linux 等へログインするのと同じ処理が始まります。

localhost 接続画面
localhost 接続画面

当然ながら初回アクセス時、Tera Term の known hosts リストに localhost のエントリがない場合は公開鍵情報を登録するか確認メッセージが表示されます。
問題なければ「続行」ボタンをクリックします。

Tera Term セキュリティ警告
Tera Term セキュリティ警告画面
他端末
設定されている IP アドレス等でアクセスすると、ログインできます。

IP アドレスの確認方法はいくつかありますが、コマンドプロンプトでは ipconfig コマンドで確認できます。

他に考えられるものとしては……
・ネットワークデバイスのプロパティを参照する。
・msinfo32.exe を起動して「システムの要約」→「コンポーネント」→「ネットワーク」→「アダプター」を参照する。
・systeminfo.exe を起動して、「ネットワーク カード:」の項目を参照する。

PowerShell

通常、Power Shell をインストールしていれば、環境変数 PATH に Power Shell のディレクトリが登録されています。
なので、ログインしたら powershell とコマンドを実行するだけで、Power Shell が起動できます。
> powershell
PATH を確認するには、システムのプロパティから環境変数を参照するか、コマンドプロンプトで set path を実行します。

bash (Win-bash)

osdn が非常に不安定なため、いったんリンクを停止します。

https://ja.osdn.net/projects/sfnet_win-bash/

この辺のアプリをダウンロードしてきて、適切なフォルダに解凍すると bash が使えるようになります。