У меня Windows 10 Anniversary Edition с установленным и работающим "Bash on Ubuntu on Windows". Я хотел бы иметь возможность подключаться по SSH к этому экземпляру Ubuntu, но хотя у меня установлен и настроен openssh-server (и он прослушивает порт 2200), когда я пытаюсь подключиться по ssh к "localhost:2200", он сообщает мне "Сервер неожиданно закрыл сетевое соединение".
Удалось ли кому-нибудь успешно это осуществить?
решение1
Я заставил это работать. Вот как.
Удалил ssh-сервер, переустановил его и убедился, что он запускается с помощью
sudo service ssh --full-restart
Убедитесь, что вы отключили root-доступ и добавили другого пользователя в файле конфигурации.
Мне удалось подключиться к подсистеме на 127.0.0.1:22, как и ожидалось. Надеюсь, это вам поможет.
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
sudo nano /etc/ssh/sshd_config
и запретить вход в систему root, установивPermitRootLogin no
Затем добавьте под ним строку со следующим текстом:
AllowUsers yourusername
и убедитесь,
PasswordAuthentication
что установлено значение ,yes
если вы хотите войти с помощью пароля.Отключите разделение привилегий, добавив/изменив:
UsePrivilegeSeparation no
sudo service ssh --full-restart
Подключитесь к подсистеме Linux из Windows с помощью ssh-клиента, например PuTTY.
решение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 он необходим, поэтому соединение не разрешено.