WSL:リモートデスクトップ接続とssh


Windows Proで、画面を使う自動処理をさせながら、他の処理もさせたいという状況。
リモートデスクトップだと、1ユーザーしか入れないので、WSLのsshdと併用することにした。
sshdは、WSLのコンソールが走ってなくても動いてるので、やりたかったことは大体できてる。
悪くない環境。

WSLのインストール

Windows 10 用 Windows Subsystem for Linux のインストール ガイド

WSL2とHyper-Vの関係

マイクロソフトアカウントでリモートデスクトップ

2要素認証を使っているWindowsのアカウントに、リモートデスクトップ接続をする。

サーバー側

  • コントロールパネルからシステムを選択
  • リモートアクセスの許可
    • このコンピュータへのリモート接続を許可する
    • リモートデスクトップユーザー
      • 追加していないかも。。忘れた
  • 複数のセッションを許可する

クライアント側

  • リモートデスクトップクライアントを起動
  • マイクロソフトアカウントでログオン
    • MicrosoftAccount\[email protected] で接続(MicrosoftAccount\はなくてもよいかも)

sshd on WSL

この設定でやったら、WSLのアカウントのパスワードでログオンできた。証明書でやりたいけど、プライベートネットワークに限定しているから、当面は良いか。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$ sudo vi /etc/ssh/sshd_config

   (2カ所修正します)

$ diff /etc/ssh/sshd_config /etc/ssh/sshd_config.org
56,57c56,57
< PasswordAuthentication yes
< PermitEmptyPasswords no
---
> PasswordAuthentication no
> #PermitEmptyPasswords no
  • ssh permission denied

    • windows terminalでsshに接続しようとしたら、permission Denied で接続できない。WSLのコンソールからだとログオンできる。 ん、と思ってみてみたら、TerminalのPowerShellからssh叩いてた。 エラーを調べようと authlogを探したけど見当たらない。調べてみねば。
    • 原因は、ユーザー名が 'hostname\username'として接続を行うため。
    • ssh -l username host とすることで、powershellからでも接続できる。

auth.log (rsyslog)

authl.logを記録する方法がありました。

(高橋訳)
何らかの理由で、WSL上ではrsyslogサービスがデフォルトで実行されていません - 残念ながら、私はその理由を見つけることができませんでした。
以下のようにして起動することができます: service rsyslog start
サービスを起動すると/var/log/auth.logと/var/log/syslogファイルが表示されます。
スタートアップごとに実行したい場合は、いくつかのチュートリアルを見つけました。例: https://dev.to/ironfroggy/wsl-tips-starting-linux-background-services-on-windows-login-3o98

% sudo service rsyslog start

Windows logon時にサービスを自動起動する

まずは、パスワードなしでsudoできるコマンドを登録する
viで編集したいので、こちらを参考にvim.basicに変更

$ sudo update-alternatives --config editor

あとは、こちらの記事を参考に設定

WSLでサービスを自動起動する(勝手翻訳:WSL Tips: Starting Linux Background Services on Windows Login)

こちらは、まだ試していない
豚吐露@wiki Windows>tips>WSLにSSH接続したい

ファイル共有

ネットワーク資格情報の入力が毎回出る/アクセスできない時の対処 – Windows10