Windows10 Homeでsshdを実行する

公開日時

Steam用のWindowsマシンをリモートから操作したかったのでssh serverにできないか調べてみたところ、標準でOpen SSH Serverがインストールされていることが分かった。

設定周りでハマったので対応方法をメモしておく。

Open SSH Serverの有効化

  • スタートメニューを右クリック => アプリと機能
  • オプション機能 => Open SSH サーバー => インストール
  • スタートメニューを右クリック => コンピュータの管理
  • サービスとアプリケーション => Open SSH SSH Server
  • スタートアップの種類 => 自動
  • サービスの状態 => 開始

sshd_configの設定

設定ファイルの場所が分からずハマった。

Windows の sshd では、既定で %programdata%\ssh\sshd_config から構成データが読み取られます。

Windows 用 OpenSSH サーバー構成 | Microsoft Docs

ProgramDataは隠しディレクトリになっていたので、vimをインストールして管理者でPowerShellを開いて以下を実行。

copy "C:\Windows\System32\OpenSSH\sshd_config_default" "C:\ProgramData\ssh\sshd_config"

sshdを再起動。

  • サービスとアプリケーション => Open SSH SSH Server
  • サービスの状態 => 停止 => 開始

これでmacからssh接続知てみるものの接続できず。

うちのマシンはMcAfeeのファイアウォールが有効になっていたので、ファイアウォールの設定を一時的に無効化してみたらパスワード認証で接続できた。

ファイアウォール自体は有効にしておきたかったので、"C:\Windows\System32\OpenSSH\sshd.exe"に対して、送受信を「すべてのデバイスに開放する」という設定を追加したところ、sshがファイアウォールを通過できるようになった。

公開鍵認証方式に切り替え

次は公開鍵認証方式に切り替える。

mac側でsshキーを生成して公開鍵をコピー。

ssh-keygen -t rsa -b 4096 -C "" -f ~/.ssh/id_rsa_windows
cat ~/.ssh/id_rsa_windows.pub | pbcopy

windowsマシンにパスワード認証でssh接続。

ssh xxx@windows_host

bashに切り替えてauthorized_keysを設定。

bash
mkdir .ssh
vi .ssh/authorized_keys
# 公開鍵を貼り付け

sshd_configをメモ帳で開いて管理者モードで実行して、以下を設定。

notepad "C:\ProgramData\ssh\sshd_config"

# 公開鍵認証を有効に
PubkeyAuthentication yes

# パスワード認証を無効化
PasswordAuthentication no

# 管理者用のauthorized_keys設定をコメントアウト
#Match Group administrators  
#      AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

管理者ユーザの場合も[[.ssh/authorized_keys]]を有効にしたかったので、Match Group administrators部分はコメントアウトした。

最後にsshdを再起動すると公開鍵認証のみが有効になる。

net stop sshd
net start sshd

これでwindowsマシンにssh接続できるようになった。

windowsマシンにssh接続できる日が来るとは思いもしなかった。

参考


Related #windows

WSL2のUbuntuにsshできるようにする

ポートフォワードとファイアウォールの設定をした

WSL2でCannot connect to the Docker daemonエラーが発生

Stable版をダウンロードしてきて再インストールしたら直った