Windows10ではBash on Ubuntu on WindowsでUbuntuが使える。このUbuntuに他の端末からSSHで接続できるようにする。ただ、sshdの自動起動設定をしても機能しないので、How to run Ubuntu service on Windows (at startup)?を参考にVBScriptで自動起動させる。
Windows10のBash on Ubuntu on Windows。Ubuntuのバージョンは16.04。
Windows10のSSH関連のサービス「SSH Server Broker」「SSH Server Proxy」を無効にする。
今回はWindowsのTera Termで作成したSSH鍵を使う。SSH鍵の作り方はTera TermのヘルプSSH 接続を参照。公開鍵(id_rsa.pub)と秘密鍵(id_rsa)を作成しておく。
Bash on Ubuntu on Windowsでsshdの設定をする。sshdはインストール済みで、設定ファイルの2箇所を変更する。
UsePrivilegeSeparationをnoにする。
UsePrivilegeSeparation no
以下の行のコメントを外す。
AuthorizedKeysFile %h/.ssh/authorized_keys
Bash on Ubuntu on Windowsのホームディレクトリ配下に.sshディレクトリを作成し、authorized_keysというファイルに公開鍵を保存する。
Tera Termで作成した公開鍵(id_rsa.pub)をWindowsのテキストエディタで開き、中身をコピーしてauthorized_keysにペーストして保存。保存したらパーミッションを変更しておく。
sshdの自動起動設定をしたいが、Bash on Ubuntu on Windowsでは自動起動の設定をしても機能しない。以下のような設定になっていても自動起動してくれない。
そこで、How to run Ubuntu service on Windows (at startup)?にあるように、VBScriptでsshdを起動させる。
Windowsで以下のVBScriptファイルを作成して、autostartssh.vbsなどの名前で保存する。
このままだとsudoコマンドでパスワードが必要なので、Bash on Ubuntu on Windowsのvisudoでsshd起動時のみパスワードなしで実行できるようにする。
以下の1行を追記(userはユーザー名)
user ALL = (root) NOPASSWD: /usr/sbin/sshd -D
これでautostartssh.vbsをダブルクリックするだけでUbuntuのsshdが起動する。
WindowsのファイヤーウォールやセキュリティソフトでTCPの22番ポートを開放しておく。
autostartssh.vbsをダブルクリックして、他のPCのTera Termから接続してみる。
接続時に「RSA/DSA/ECDSA/ED2551鍵を使う」を選択し、秘密鍵(id_rsa)を読み込む。パスフレーズはユーザーのログインパスワードでなく、SSH鍵作成時に設定したパスフレーズ。
あとは、タスクスケジューラでWindows起動時にautostartssh.vbsを実行させるだけだと思ったら、タスクスケジューラでautostartssh.vbsが実行されない。原因がわからないので、とりあえず、スタートアップへautostartssh.vbsのショートカットを追加して自動ログイン設定することで、sshdを自動起動させることにした。
環境
Windows10のBash on Ubuntu on Windows。Ubuntuのバージョンは16.04。
WindowsのSSHサービス無効
Windows10のSSH関連のサービス「SSH Server Broker」「SSH Server Proxy」を無効にする。
SSH鍵作成
今回はWindowsのTera Termで作成したSSH鍵を使う。SSH鍵の作り方はTera TermのヘルプSSH 接続を参照。公開鍵(id_rsa.pub)と秘密鍵(id_rsa)を作成しておく。
sshd設定
UsePrivilegeSeparationをnoにする。
UsePrivilegeSeparation no
以下の行のコメントを外す。
AuthorizedKeysFile %h/.ssh/authorized_keys
SSH公開鍵の保存
Bash on Ubuntu on Windowsのホームディレクトリ配下に.sshディレクトリを作成し、authorized_keysというファイルに公開鍵を保存する。
Tera Termで作成した公開鍵(id_rsa.pub)をWindowsのテキストエディタで開き、中身をコピーしてauthorized_keysにペーストして保存。保存したらパーミッションを変更しておく。
sshd自動起動設定
sshdの自動起動設定をしたいが、Bash on Ubuntu on Windowsでは自動起動の設定をしても機能しない。以下のような設定になっていても自動起動してくれない。
そこで、How to run Ubuntu service on Windows (at startup)?にあるように、VBScriptでsshdを起動させる。
Windowsで以下のVBScriptファイルを作成して、autostartssh.vbsなどの名前で保存する。
このままだとsudoコマンドでパスワードが必要なので、Bash on Ubuntu on Windowsのvisudoでsshd起動時のみパスワードなしで実行できるようにする。
以下の1行を追記(userはユーザー名)
user ALL = (root) NOPASSWD: /usr/sbin/sshd -D
これでautostartssh.vbsをダブルクリックするだけでUbuntuのsshdが起動する。
ファイヤーウォール設定
WindowsのファイヤーウォールやセキュリティソフトでTCPの22番ポートを開放しておく。
SSH接続を試す
autostartssh.vbsをダブルクリックして、他のPCのTera Termから接続してみる。
接続時に「RSA/DSA/ECDSA/ED2551鍵を使う」を選択し、秘密鍵(id_rsa)を読み込む。パスフレーズはユーザーのログインパスワードでなく、SSH鍵作成時に設定したパスフレーズ。
あとは、タスクスケジューラでWindows起動時にautostartssh.vbsを実行させるだけだと思ったら、タスクスケジューラでautostartssh.vbsが実行されない。原因がわからないので、とりあえず、スタートアップへautostartssh.vbsのショートカットを追加して自動ログイン設定することで、sshdを自動起動させることにした。
0 件のコメント:
コメントを投稿