LoginSignup
6
3

More than 3 years have passed since last update.

Windows10公式のopensshサーバーを起動して、macからsshで接続するまで

Posted at

windows10にて公式にOpenSSHサーバーの機能が追加されたので、使いたい。
(リモート操作ではpsexecなどはあったがほとんど使えない)
これでwindows用のビルドなどがリモートで行えそう。

OpenSSHのインストール

これはいろんな人が書かれているのでほぼ割愛。
ファイアウォールの設定も忘れずに。

OpenSSHの起動、設定

まずは起動

# サービス起動
Start-Service sshd
# サービス自動起動
Set-Service -Name sshd -StartupType 'Automatic'

デフォルトシェルも変えよう。
(何も変えなければコマンドプロンプトになっている)

シェルのパス確認

# powershellの場合
Get-Command powershell.exe | Format-Table -AutoSize -Wrap

CommandType Name           Version        Source
----------- ----           -------        ------
Application powershell.exe 10.0.19041.546 C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe

# wsl bashの場合
Get-Command bash.exe | Format-Table -AutoSize -Wrap
# (省略)

Sourceがほしいパス

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force
# -Value以下は使いたいシェルのパスに変える

sshd_configの変更

デフォルトだとパスワード認証になる。
公開鍵認証に変えましょう。
sshd_config%programdata%\ssh\sshd_configにある。
(%programdata%はだいたいc:\ProgramData\になってる。)

設定ファイルの編集は必ず管理者権限で行いましょう。
WindowsにはVirtualStoreというファイル保護の仕組みがあり、一般ユーザーで変更しても別の場所に保存され、いつまでも更新されません。
https://answers.microsoft.com/ja-jp/windows/forum/all/virtualstore/e09bf6c6-74fa-4b1b-a148-8de1dd9d367f

# 例
Invoke-Item sshd_config

でファイルをメモ帳などで開いて編集→保存

sshd_config

# 一番下の2行はコメントアウト
# Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Adminグループは別のauthorized_keysファイルが使われるようで、これは使わないようにしておく。

鍵ファイルのPermissionまわりで苦戦したので、ログも出しておく。

# Logging
SyslogFacility LOCAL0 # LOCAL0に変更
LogLevel DEBUG        # ここは一般的なsshd_configの通り

......

# これも念の為コメントアウト
PubkeyAuthentication yes

sshd 再起動

restart-service -name sshd -force

あとは一般的な手順ssh-keygenで鍵つくって、.ssh/authorized_keysに登録。
これでsshでwindowsにつながると思いきや…

ハマったところ、鍵ファイルの権限まわり

クライアント側の秘密鍵の権限などは間違っていない。
ただ、windows側のsshdのログには

Could not open authorized keys 'C:\\Users\\hogeuser\\.ssh/authorized_keys': Permission denied

と吐かれる。

ググって出るような処理は行ってみたが…

# 権限確認
icacls C:\Users\hogeuser\.ssh\authorized_keys

結局、authorized_keysファイルから他のユーザーの権限削除、SYSTEMユーザーにフルアクセス権限を付与したらPermission deniedとは出なくなった。

↓ユーザーはSYSTEMでなくてもいいかも。
https://gist.github.com/lelegard/0e257510057bea59738422ae871213e8#user-configuration-on-the-windows-server

read_keyfile_line: ----- line 1 exceeds size limit

メモ帳などでauthorized_keysファイルを編集するとこういうエラーがでることもある。
メモ帳ではUTF-8を指定して上書き保存しましょう。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3