日々精進

新しく学んだことを書き留めていきます

windows起動時にsshd on Ubuntu on Windowsを起動する

普通のUbuntuでは sudo update-rc.d ssh defaults を実行すると自動起動するようになるけど、これやってもだめだった。 Ubuntu on WindowsはWindows起動時に勝手に起動してくれないみたい。

因みにsshサービスの状態は以下コマンドで調べられる。 service --status-all | grep ssh

以下をstartSshd.vbsというファイルに書いてスタートアップフォルダに配置するとsshdを自動起動できるようになった。

set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /etc/init.d/ssh start'",0

パスワードナシでsudoを実行する必要があるので、sudo visudoを実行し以下を追加する必要がある。 Username ALL=NOPASSWD: /etc/init.d/ssh

スタートアップフォルダは以下の場所にある。 C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup いつのまにこんな深いところになったんだ。。

【追記】 もう一度環境構築したらなぜか上記startSshd.vbsを実行してもsshdが起動しなくなってしまった。 どうもvisudoのパスワードなしでsudo実行する設定が効いてないっぽい。ターミナルから sudo /etc/init.d/ssh startを実行したらパスワードなしで実行出来るんだけどな。。 以下のようにstdinからパスワードを渡すようにすると起動出来た。パスワードをベタに書くのはセキュリティ的にアレだけど。。

set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'echo mypassword | sudo -S /etc/init.d/ssh start'",0

参考:

askubuntu.com

pc.atsuhiro-me.net

superuser.com

qiita.com

stackoverflow.com