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 から構成データが読み取られます。
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接続できる日が来るとは思いもしなかった。