Windows10でBashのSSHサーバーを自動起動してみた

前回の記事で 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 を右クリックしてプロパティを開き、スタートアップを無効にします。

20160811_Bash-18

SSH Server Proxy を右クリックしてプロパティを開き、スタートアップを無効にします。

20160811_Bash-19

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 のパスワード入力を省略する設定をすると、完全に自動起動となります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする