前回の記事で Bash on Ubuntu on Windows 上にSSHサーバーを立てて、SSHクライアントアプリから接続してみました。
うまくいきましたが、Bash on Ubuntu on Windows アプリを閉じてしまうと、Windows上では bash プロセスは消滅してしまい、当然SSHサーバーも消えてしまいます。
Windowsを起動して、Bash on Ubuntu on Windows アプリを立ち上げて、SSHサーバーを立ち上げるコマンドを入力する、という手続きを踏めば使えるようになるのですが、ちょっと不便かな、ということで自動起動できないか試してみました。
Windows10 SSH Server をスタートさせない
Windows10 universary update を適用させると、Windows用のSSHデーモンが常駐するようになります。Windowsスタート時に常駐してしまいますので、Bash SSHサーバーを立ち上げることができません。
Windows SSHデーモンが開始しないように設定変更してしまいます。コントロールパネルから管理ツールを開き、サービスを選択して開きます。
SSH Server Broker を右クリックしてプロパティを開き、スタートアップを無効にします。
SSH Server Proxy を右クリックしてプロパティを開き、スタートアップを無効にします。
Ubuntuでサービスの自動起動設定
Bash on Ubuntu on Windows アプリを開くとき、即ちシステム起動時にサービスを自動起動するというのはどうでしょうか。
RedHad系でchkconfigコマンドに相当するサービス起動コマンドは、UbuntuなどのDebian系ではsysv-rc-confコマンドを使用します。
インストールして設定してみます。
sudo su - apt-get install sysv-rc-conf
sysv-rc-conf ssh on sysv-rc-conf --list|grep ssh
ssh 2:on 3:on 4:on 5:on
すべてのランレベルがonとなっていて自動起動が有効になりました。
Bash on Ubuntu on Windows アプリを閉じて、開いて、プロセスを確認してみます。
ps aux|grep ssh
sshデーモンが起動されると”/usr/sbin/sshd”が表示されるはずですが、表示されていません。だめみたいです。
Windowsから自動起動
Bash on Ubuntu on Windows の bash.exeコマンドでシェルオプションを使用して、sshデーモンを起動してみましょう。
bash.exe -c "sudo /usr/sbin/sshd -D"
sshdの-Dオプションは、sshdがデタッチされず、デーモンにならずにフォアグランド起動されます。
Windowsのコマンドプロンプトで上記コマンドを入力すると、パスワード入力が求められ
[sudo] password for 〇〇〇:
入力すると、プロンプトに戻りません。フォアグランドで実行されました。
ちょっと乱暴ですが、このコマンドラインをショートカットにして、スタートアップフォルダに置くとWindows起動とともにbashが起動して、sshdが実行されることになります。sudo のパスワード入力を省略する設定をすると、完全に自動起動となります。