「Windows 10 上の Bash on Ubuntu」に SSH 接続するにはどうすればいいですか?

「Windows 10 上の Bash on Ubuntu」に SSH 接続するにはどうすればいいですか?

私は Windows 10 Anniversary Edition を所有しており、「Bash on Ubuntu on Windows」をインストールして動作させています。この Ubuntu インスタンスに SSH 接続できるようにしたいのですが、openssh-server をインストールして構成し (ポート 2200 でリッスン)、「localhost:2200」に SSH 接続しようとすると、「サーバーが予期せずネットワーク接続を閉じました」というメッセージが表示されます。

これを成功させた人はいますか?

ここに画像の説明を入力してください

答え1

動作させることができました。方法は次のとおりです。

ssh-serverをアンインストールし、再インストールして、次のように起動していることを確認しました。

sudo service ssh --full-restart

必ずルート アクセスをオフにし、構成ファイルに別のユーザーを追加してください。

予想通り、127.0.0.1:22 のサブシステムに接続できました。お役に立てれば幸いです。

スクリーンショットはこちらです。

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config設定によりルートログインを禁止するPermitRootLogin no
  4. 次に、その下に次の行を追加します。

    AllowUsers yourusername

    パスワードを使用してログインする場合は、PasswordAuthenticationが設定されていることを確認してください。yes

  5. 以下を追加/変更して権限分離を無効にします:UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. PuTTY などの SSH クライアントを使用して、Windows から Linux サブシステムに接続します。

答え2

上記の回答は近いものでしたが、まだ問題が残っていましたConnection closed by 127.0.0.1

そこで、最初からやり直し、パッケージ--purgeを削除するときにオプションを指定することsshdで (以下に示すように)、この問題の私のバリエーションは解決しました。

user$ sudo apt-get remove --purge openssh-server # First remove sshd with --purge option.
user$ sudo apt-get install openssh-server
user$ sudo vi /etc/ssh/sshd_config # **See note below.
user$ sudo service ssh --full-restart

# ** Change Port from 22 to 2222. (Just in case MS-Windows is using port 22).
#    Alternatively, you can disable MS-Windows' native SSH service if you 
#    wish to use port 22.

答え3

Windowsの実装ではchrootが提供されていないため、/etc/ssh/sshd_configを変更する必要があります。

UsePrivilegeSeparation no

また、useradd コマンドなどを使用してユーザーを作成する必要があります。

答え4

SSH 接続できない理由は、サーバーからのログに表示されます。

chroot("/var/run/sshd"): 関数が実装されていません [preauth]

Linux サブシステムには chroot が実装されていないようですが、ssh サーバーでは chroot が必要なので、接続は許可されません。

関連情報