2017年8月15日火曜日

Windows Server Insider Preview Build 16257のWindows Subsystem for Linuxでsshdを有効化

注)Windows Subsystem for Linuxは、随時起動させていますから、deamonというかWindowsのサービス的な使い方は、現時点で想定されておりません。
Announcing Windows Server Insider Preview Build 16257にも下記の通り記載があります。
At this time, WSL does not support persistent Linux services (such as daemons and jobs) as background tasks.


まずsshdについて、Debian系のパッケージ名を調べる。
パッケージ: ssh (1:6.0p1-4+deb7u6) [security]の"その他の ssh 関連パッケージ"に、openssh-serverである旨、記載がありますね。
これで、パッケージ導入済みか調べてみます。
dpkg --status パッケージ名
でわかりますね。


runlevelを確認したいので、sysv-rc-confを起動してみたら入っておりません。


というわけで、パッケージ追加。



runlevel 2,3,4,5で有効化されています。


ps axを実行してみましたが、deamonは起動していない様子。


sshdを起動してみた。

あれ、ホストキーがない。。。ホストキーがなければ作成してくれる仕様だったはず。
調べたら、
Ubuntu 16.04 LTS ServerでSSHのホストキーが自動生成されない
という記事があり、
dpkg-reconfigure openssh-server
を実行すればよいらしい。

ホストキーができた。

ssh localhostしてみる。

permission denied (publickey)
が発生しております。
Teratermからは、接続エラー。


Windows Server Insider Preview機のWindows Firewallを開放。


.ssh配下、known_hostsしかないですね。

SSH using publickey not working on debian (Permission denied (publickey,password).) with clean /var/log/auth.logあたりを見てみると、
and yes - the my local ~/.ssh/id_rsa.pub is in the servers ~/.ssh/authorized_keys
となっているので、鍵のファイルがないことに起因している。今回は接続確認が目的なので、パスワード認証を有効化できれば良いと考え、

sshd_configを開いたら、パスワード認証が無効化→鍵で認証ということになります。。。上の画面通り、パスワード認証を有効化しました。

sshdを再起動。


ローカルホストから、ssh成功。


リモートホストから、ssh成功。



以上で接続確認とれました。

今回のポイントは、下記のとおりです。
  • Windows Subsystem for Linuxが動作するOSにおいて、Windows Firewallを開けておく
    今回の例では、Windows Firewall自体を無効化しまししたが、sshの22/TCPだけあけるのが推奨
  • Windows Server Insider Preview Build 16257のWindows Subsystem for Linuxで利用しているUbuntuのsshd_configは既定で鍵認証になっている
    1. そのまま使うならssh鍵の用意が必要。ローカル側にid_rsa.pub、ssh先に~/.ssh/authorized_keysとして用意。
      ssh鍵は、ssh-keygen - 認証用の鍵を生成 - Linuxコマンド等々を参照すれば作成できますね。
    2. 本稿のようにパスワード認証を有効化することも可能です。

0 件のコメント:

コメントを投稿