Win10 SSH サーバ設定
2024/03/26 19:38
SSH サーバとは
まず、SSH は Secure Shell の略称で、安全なリモートログインを行う上で必要なものになります。Shell は、シェルと読みます。
コマンドの入力を待ち受けるもので、入力された文字列を OS がコマンド等と解釈して実行します。
シェル自体、リモートから操作を受け付けます。
Web ブラウザでコメントを書いて送ることができますが、仕組みとしては似たようなものです。
ただし、通信内容は保護されていないので、そのままでは覗き見ることができます。
覗き見から通信内容を守るためには、SSL や TLS といった規格で通信を暗号化します。
つまり、シェルを実行する環境がセキュアなのでセキュアシェルであると覚えると良さそうです。
SNS 等にコメントを書く時は Web ブラウザとか専用アプリから該当のサイトを開いて、文字を入力すると思います。
書き込んだ文字列は、インターネットに接続されているコンピュータに送られてデータとして処理されますが、その接続を受け付けているのがサーバです。
この仕組みは SSH でも同じで、ターミナルエミュレータ等で該当のコンピュータへ文字列を送ることができます。
文字列を受け付けるコンピュータがサーバです。
どんな形式で文字列を受け付けるのか……といえば SSH なので、SSH サーバと呼ばれます。
要約すると、覗き見られないように暗号化された通信を使ってコンピュータを操作するサービスを提供しているのが SSH サーバです。
サービスは、英語で Service と書きます。
このサービスという名詞は、奉仕などの意味を持つ動詞「サーブ」から来ています。
昔、サーブ*1するのは、ホスト*2の役割でした。
現代、サーブ専門の人がいて、その人たちを「サーバ」と言ったりもします。
これらになぞらえて、インターネットでもホストやサービス、サーバ等という名称が使われています。
なお、この Serve の語源はラテン語の「servus」で、意味は 奴隷 だそうです。
UNIX / Linux sshd
UNIX はともかく、Linux の場合は OpenSSH がインストールされていることが多いです。sshd は、Secure Shell Daemon と呼ばれる、常時アクセスを受けるサーバ側のアプリケーションです。
Daemon は、裏でひっそりと動き、常に仕事をするマクスウェルの悪魔になぞらえて呼ばれたことが始まりで、サービスと同じ意味で使われます。
バックグラウンドプロセスを物理学者ジェームズ・クラーク・マクスウェルが想像で創り出した悪魔になぞらえて、「Daemon」(デーモン)という愛称で呼んだことが始まりとのことTera Term は sshd というサービスにアクセスするための、クライアントソフトという位置づけです。
UNIX/Linuxでよく使われる「Daemon」(デーモン)プロセスの語源とは? - GIGAZINE
Windows 10 OpenSSH Server
標準では無効化されてはいるものの、簡単な設定で利用できる Windows 10 の SSH サーバです。OpenSSH Server という名前から分かるように、Linux にインストールされている sshd と大差ありません*3。
有効にすると、Linux 等と同じように、SSH でのアクセスが可能になります。
Tera Term で Windows 10 の SSH サーバへログインするとコマンドプロンプトになり違和感がありますが、Windows 環境で実行可能な bash を適切にインストールすれば、Windows 環境ながら、いつもながらの操作方法を利用することが可能です。
もちろん、標準でインストールされている Power Shell を利用することも可能です。
Windows 10 への SSH 接続設定
前提条件 (Windows 10 バージョン)
Windows 10 バージョン 1803 以降で実行可能です。バージョンを確認するには、Windows キーを押して winver をコマンドとして実行します。
ちなみに、winver 画面は msconfig コマンドを実行するとでてくる「システム構成」の「ツール」タブからでも起動できます。
インストール
スタートメニューを右クリックして「設定」を選択します。「Windows の設定」で、アプリを選択します。
※ 実のところ、スタートメニューを右クリックしたときに、「アプリと機能」を選択しても同じ画面に移動できます。
右ペインの「アプリと機能」にある「オプション機能の管理」をクリックします。
「オプション機能の管理」で、「+機能の追加」をクリックします。
「オプション機能」の「OpenSSH サーバー」をクリックします。
クリックした「OpenSSH サーバー」が展開されるので「インストール」をクリックします。
インストール処理が走って「オプション機能の管理」に戻ります。
これで「OpenSSH サーバーの」インストールは完了です。
画面右上の × ボタンをクリックして、画面を閉じます。
設定
SSH サーバ
サービスとして起動しないと、SSH ログインができません。スタートメニューを右クリックして「コンピューターの管理」を起動します。
ここから「サービスとアプリケーション」→「サービス」へ移動すると「OpenSSH SSH Server」があります。
「OpenSSH SSH Server」をダブルクリックして「OpenSSH 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 でのアクセスの場合はユーザー登録だけで良いようです(未確認)。
Windows 10 への SSH 接続
接続
Tera Term でアクセスする場合、通常の UNIX / Linux と同じです。自端末
localhost (127.0.0.1) でポート 22 へアクセスすると、UNIX や Linux 等へログインするのと同じ処理が始まります。当然ながら初回アクセス時、Tera Term の known hosts リストに localhost のエントリがない場合は公開鍵情報を登録するか確認メッセージが表示されます。
問題なければ「続行」ボタンをクリックします。
他端末
設定されている IP アドレス等でアクセスすると、ログインできます。IP アドレスの確認方法はいくつかありますが、コマンドプロンプトでは ipconfig コマンドで確認できます。
他に考えられるものとしては……
・ネットワークデバイスのプロパティを参照する。
・msinfo32.exe を起動して「システムの要約」→「コンポーネント」→「ネットワーク」→「アダプター」を参照する。
・systeminfo.exe を起動して、「ネットワーク カード:」の項目を参照する。
PowerShell
通常、Power Shell をインストールしていれば、環境変数 PATH に Power Shell のディレクトリが登録されています。なので、ログインしたら powershell とコマンドを実行するだけで、Power Shell が起動できます。
> powershellPATH を確認するには、システムのプロパティから環境変数を参照するか、コマンドプロンプトで set path を実行します。
bash (Win-bash)
osdn が非常に不安定なため、いったんリンクを停止します。この辺のアプリをダウンロードしてきて、適切なフォルダに解凍すると bash が使えるようになります。