OpenSSH Security Testing Kick Offで、Windows用のOpenSSHがいい感じに出来たので試してねという記事が出たのでちょっと今更感はあるけど試してみた。
提供されているOpenSSHは記事の1行目のリンクhttps://github.com/PowerShell/Win32-OpenSSHで入手できる。プロジェクト名がWin32-OpenSSHなわりにWin64なのも用意してあるので「オイラ32bitアプリ嫌いなんだよね」という人も大丈夫。
今回はOpenSSH-Win64.zip (v0.0.13.0)を入手した。
解凍して適当なフォルダに置く。今回はc:/program files/opensshとした。
クライアントとして使用
PowerShellを起動する。
Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\foobar> cd /"program files"/openssh PS C:\program files\openssh> gci ディレクトリ: C:\program files\openssh Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017/04/07 22:44 4197 install-sshd.ps1 -a---- 2017/04/16 13:30 315392 scp.exe -a---- 2017/04/16 13:30 331264 sftp-server.exe -a---- 2017/04/16 13:30 381440 sftp.exe -a---- 2017/04/16 13:30 1909760 ssh-add.exe -a---- 2017/04/16 13:30 1964544 ssh-agent.exe -a---- 2017/04/16 13:30 2022912 ssh-keygen.exe -a---- 2017/04/16 13:30 132096 ssh-shellhost.exe -a---- 2017/04/16 13:30 2342400 ssh.exe -a---- 2017/04/16 13:30 2291712 sshd.exe ------ 2017/04/07 22:44 3520 sshd_config -a---- 2017/02/07 10:23 567 uninstall-sshd.ps1 PS C:\program files\openssh> ./ssh foobar@192.168.31.219
gciはGet-ChildItemの省略形。UNIX系のOSでいうところのls, DOS系でいうところのdirっぽいもの。
sshで他のホストにログインしてみたところ、普通にログインできた。難しいところも不具合らしいものも見当たらなかった。
ただし、PowerShellの画面なので、それが圧倒的な使いにくさに繋がっている。20数年進化してないこの画面いいかげんどうにかして下さいよ。PowerShellリリース時に改修してりゃ良かったのに何で放置したんだろ。
拍子抜けするほど何も不具合無く動くのでこれで終わり。
サーバーとして使用
まずは管理者としてPowerShellを開く。
普通にスタートボタンを左クリックしてWまでスクロールし、Windows PowerShellを選択。Windows PowerShellのアイテムリストからWindows PowerShellを「右クリック」して「管理者として実行する」を左クリック。
Windows10 Creators Update以降はスタートボタンの右クリックで「Windows PowerShell (管理者)」でも行ける。
Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Windows\system32> cd /"program files"/openssh PS C:\program files\openssh> gci ディレクトリ: C:\program files\openssh Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017/04/07 22:44 4197 install-sshd.ps1 -a---- 2017/04/16 13:30 315392 scp.exe -a---- 2017/04/16 13:30 331264 sftp-server.exe -a---- 2017/04/16 13:30 381440 sftp.exe -a---- 2017/04/16 13:30 1909760 ssh-add.exe -a---- 2017/04/16 13:30 1964544 ssh-agent.exe -a---- 2017/04/16 13:30 2022912 ssh-keygen.exe -a---- 2017/04/16 13:30 132096 ssh-shellhost.exe -a---- 2017/04/16 13:30 2342400 ssh.exe -a---- 2017/04/16 13:30 2291712 sshd.exe ------ 2017/04/07 22:44 3520 sshd_config -a---- 2017/02/07 10:23 567 uninstall-sshd.ps1 PS C:\program files\openssh> Set-ExecutionPolicy Unrestricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\program files\openssh> ./install-sshd.ps1 [SC] SetServiceObjectSecurity SUCCESS [SC] ChangeServiceConfig SUCCESS sshd and ssh-agent services successfully installed PS C:\program files\openssh> Set-ExecutionPolicy restricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\program files\openssh>
インストール用のPowerShellスクリプトを実行したいので、先に実行ポリシーを「制限無し」に変更する。
インストールが終わったら実行ポリシーを「制限あり」に(忘れずに)戻す。何か理由があって通常時にunrestricted,restricted以外にしているということであればそれに戻す。
鍵ファイル作成
インストールは終わったけど鍵ファイルが無い状態なので作成する。作成するのはrsa, dsa, ecdsa, ed25519の4種類。
個別に作るということであれば例えばrsaなら以下。他の鍵ファイルの作成は下の緑字のrsaの部分をdsa, ecdsa, ed25519に代えるだけ。
PS C:\program files\openssh> ./ssh-keygen.exe -f ./ssh_host_rsa_key -t rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): [Enter] Enter same passphrase again: [Enter] Your identification has been saved in .\ssh_host_rsa_key. Your public key has been saved in .\ssh_host_rsa_key.pub. The key fingerprint is: SHA256:4KIxlWx0jDAG8AUiYJ6gUcluwXqXzUxSfpFUOQ7Z5ec gato@DESKTOP-0GU1CRT@DESKTOP-0GU1CRT The key's randomart image is: +---[RSA 2048]----+ |@**+o+o.o=.o. | |*=*=o+o +.+. | |.=..=Bo .o .. . | |. +oo.+o . o | | oo.. . S E | | + . | | . | | | | | +----[SHA256]-----+ PS C:\program files\openssh>
個別に鍵ファイルを作成(更新)するのではなく一括でということであれば以下。
PS C:\program files\openssh> ./ssh-keygen -A C:\program files\openssh\ssh-keygen.exe: generating new host keys: RSA DSA ECDSA ED25519 PS C:\program files\openssh> gci ディレクトリ: C:\program files\openssh Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/05/10 21:18 logs -a---- 2017/04/07 22:44 4197 install-sshd.ps1 -a---- 2017/04/16 13:30 315392 scp.exe -a---- 2017/05/10 21:04 16384 secedit.jfm -a---- 2017/05/10 21:04 1048576 secedit.sdb -a---- 2017/04/16 13:30 331264 sftp-server.exe -a---- 2017/04/16 13:30 381440 sftp.exe -a---- 2017/04/16 13:30 1909760 ssh-add.exe -a---- 2017/04/16 13:30 1964544 ssh-agent.exe -a---- 2017/04/16 13:30 2022912 ssh-keygen.exe -a---- 2017/04/16 13:30 132096 ssh-shellhost.exe -a---- 2017/04/16 13:30 2342400 ssh.exe -a---- 2017/04/16 13:30 2291712 sshd.exe ------ 2017/04/07 22:44 3520 sshd_config -a---- 2017/05/10 21:28 668 ssh_host_dsa_key -a---- 2017/05/10 21:28 627 ssh_host_dsa_key.pub -a---- 2017/05/10 21:28 227 ssh_host_ecdsa_key -a---- 2017/05/10 21:28 199 ssh_host_ecdsa_key.pub -a---- 2017/05/10 21:28 432 ssh_host_ed25519_key -a---- 2017/05/10 21:28 119 ssh_host_ed25519_key.pub -a---- 2017/05/10 21:28 1679 ssh_host_rsa_key -a---- 2017/05/10 21:28 419 ssh_host_rsa_key.pub -a---- 2017/02/07 10:23 567 uninstall-sshd.ps1 PS C:\program files\openssh>
sshdを起動
PS C:\program files\openssh> net start sshd
sshd サービスは正常に開始されました。
サービスとして登録済みのものを開始させるのでC:\program files\opensshから実行しなくてはならないということではない。
ここでサービスが正常に開始されずに System Error 5 が出ることがある。(後述)
インストール後の初期値は自動起動になっていないので自動起動させたい場合はサービスの設定でsshdを自動起動にする。
またはPowerShellから Set-Service sshd -StartupType Automatic
ファイアウォールのポップアップが出た場合はアクセスを許可する範囲の必要に応じて「プライベートネットワーク」と「パブリックネットワーク」にチェックをする。
[アクセスを許可する]を押す。
設定ファイルはsshd_configなので普通なら鍵ファイルのpathを変更してやれば正常に読み込んで起動してくれる筈だが、試した範囲では設定ファイル内のデフォルト値として書かれているpathのC:\etc\sshフォルダを作成してそこに鍵ファイルを置いてやらないとsshdがサービスとして起動してくれなかった。
上の画面が出る。(これは「サービス」からsshdを起動させた場合。PowerShellからsshdを起動させた場合はポップアップは出ずに文字でエラーが表示される)
ローカル コンピューターのsshdサービスを開始できません。エラー5: アクセスが拒否されました。
ところが一度正常に起動できてしまえば次からはC:\etc\sshが無くても動いちゃう?よく解らないなぁ・・・
別の原因がある?
他の端末からWindowsにsshでログインする場合、Windowsのローカルアカウントがあれば普通に ssh hoge@windows-pcのIPアドレス/ホスト名 でログインできる。ここは普通。マイクロソフトアカウントを使う場合、それがfoobar@example.comとすると ssh foobar@windows-pcのIPアドレス/ホスト名 で良いみたい。example.comどこ行った?
何かコマンドを実行した際に表示される内容が複数行の場合、普通なら1行ずつ改行されて「ズラズラ」っと表示される筈だけど、1行にひたすら上書きになることがある。プロンプトが出た後はまた正常に改行される。その発生条件に一貫性が無いので、ときどきのランダムなのかな?
関連記事:- Tiny 11をMicrosoftと通信させない名前解決変更
- マイクロソフト PCマネージャというアプリを触ってみた
- Windows 11のシステム要件を満たさないPCでWindows11の大型アップデートを適用
- Windows 11でWindows Updateの自動更新を停止する
- Windows 11でWindows Updateによる更新を手動で停める (後編)
- Windows 11でWindows Updateによる更新を手動で停める (前編)
- Windows 11のシステム要件を満たさないPCでWindows10からWindows11にアップグレード
- WindowsでもUnbound (Remote controlの準備)
- Windows 11リリース (例のごとくシステム要件を満たさないPCにインストール)
- Androidスマホ画面をWindowsで表示 (ワイヤレスディスプレイ プロジェクション)
- Windows 11上で「このPCは現在、Windows 11システム要件を満たしていません」
- MS公式誰でもDLできるWindows 11 インサイダー版を古いPCにインストールと休止無効化設定
- Windows IMEで半角/全角キーの割り当てをIMEオフだけに変更(Linuxも)
- Windows 11システム要件に満たないPCにISOファイル無改造でインストール
- Windows 11上で「このPCではWindows 11を実行できません」
- Windows 11を9年前の超非力なノートPCにインストールしてみた
- 情報セキュリティ Windows 10でUSBメモリの自動実行を不可にする
- 情報セキュリティ Windows 10でUSBメモリの読み書きを不可にする
- Windows 10を旧型ノートPCにクリーンインストールしてみた
- DVDFab 11がリリースされた
- WinlogbeatでWindowsイベントログを可視化 後編
- WinlogbeatでWindowsイベントログを可視化 中編
- WinlogbeatでWindowsイベントログを可視化 前編
- Windows 10のメールでZ-Push (Exchange)を利用する
- Chrome OS (Chromium OS)を触ってみた
- Windows 10の時刻同期設定
- Windowsで写真現像 darktable 2.4
- 音楽プレーヤー Plexamp
- どうしてもWindowsの共有フォルダが見えない対処
- Windows 10 Fall Creators Update
参考にさせてもらって、Open-SSH インストールしました。
エラー 5が出ました。
コンパネの管理ツールのサービスの画面で、SSHDのプロパティで
ログオンを「ローカルシステムアカウント」に変えたら
起動できました。