Как сделать SSH в WSL

30

Давний читатель, впервые задающий вопрос.

Я следовал инструкциям в этом ответе:

Как я могу использовать SSH в «Bash on Ubuntu для Windows 10»?

Я пытаюсь SSH из PuTTY в Windows на той же машине. Используя порт 22, который соответствует моему файлу конфигурации. Пробовал оба 127.0.0.1 и 127.0.1.1. Тем не менее, я все еще получаю «доступ запрещен»:

введите описание изображения здесь

В конечном счете, я надеюсь настроить удаленную сборку Visual Studio, но до сих пор мне не удалось подключиться вообще. Какие следующие шаги я должен предпринять?

Process Hacker показывает это для порта 22 (не уверен, что это значит):

введите описание изображения здесь

Вот содержимое / etc / ssh / sshd_config:

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation no

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin no
AllowUsers basel
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
Базель Альгханем
источник
«Отказано в доступе» означает, что вы вводите неверный пароль для учетной записиbase1
Ramhound
1
Я определенно не предоставляю неверный пароль. Я изменил это и повторил несколько раз, чтобы убедиться.
Базель Альгханем
Вы пытались осмотреться ?
Мэтт Кларк
1
Я действительно попытался осмотреться, пару часов этим утром. К сожалению, я, как правило, не знаю, в этой области. Я попытался закомментировать строку, как предложено в ответе, и это не помогло. Как вы думаете, попытка аутентификации на основе ключей может работать?
Базель Альгханем
1
Переключился на порт 2200 (строка 5 в sshd_config) и смог успешно войти в WSL. Я предполагаю, что Windows использовала порт 22, так что Linux не мог? Кроме того, sshd обнаружился в Process Hacker как прослушивающий порт 2200, где он вообще раньше не появлялся. Представляю ли я это как ответ на мой вопрос?
Базель Альгханем

Ответы:

25

Измените порт 22 на другой, например, 2222, в файле /etc/ssh/sshd_config, затем перезапустите службу ssh по общему соединению sudo service ssh --full-restart, вы успешно войдете в систему. Но я не знаю причину.

Я также пытаюсь использовать его в качестве удаленного GDB-сервера для Visual Studio от VisualGDB, он не работает хорошо. VisualGDB будет поддерживать его в следующей версии , как на официальном вебсайте shows.The ссылка https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274

нул лун
источник
Теперь VisualGDB поддерживает его, более подробную информацию можно получить
nul lun
4
Это связано с тем, что Windows может запустить SSH Server Broker на порту 22. Если вы точно не знаете, что он вам нужен, его можно безопасно отключить. Используется для некоторых процедур во время разработки.
UnclickableCharacter
3
Не забудьте открыть порт в брандмауэре Windows.
dthor
3
Возможно, вам также потребуется изменить аутентификацию. По умолчанию требуется ssh-ключи к клиенту. Если вы хотите классический логин пользователя / пароля, установите эту конфигурацию в /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio
1
Мне пришлось включить правило брандмауэра, как упомянуто @dthor, и включить аутентификацию пароля, как упоминал Тонатио, тогда это работало.
SDKKS
10

Порт 22 не работает, потому что Windows поставляется со встроенным SSH-сервером.

Windows 10 поставляется с SSH-сервером, и его нужно либо отключить, либо необходимо изменить порт, который будет использоваться для SSH в WSL. Я решил сделать последнее и использовать порт 2200 для WSL SSH.

Источник: https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

ayao1337
источник
На самом деле это единственный правильный ответ на этот вопрос, даже принятый ответ, намекает на то, что причина была в том, что порт пришлось сменить. Я собираюсь наградить этот ответ щедростью за 24 часа.
Ramhound
2

При входе в систему используйте пароль своей учетной записи Microsoft Windows, а не пароль пользователя WSL Linux. Вы войдете в свою домашнюю директорию Windows с запущенным cmd.exe. Введите команду, /windows/system32/bash.exe ~ --loginчтобы войти в домашнюю директорию WSL и выполнить вашу .profile.

rhmccullough
источник
1

WSL: Также обратите внимание на «UsePrivilegeSeparation no». В противном случае запуск сервера на консоли (/ usr / sbin / sshd -Dddde) завершится неудачно, а PrivilegeSeparation не реализовано ...

ga_t
источник
1
UsePrivilegeSeparation устарела
mFeinstein
0

Что я сделал, так это то, что sudo ssh-keygen вместо ssh-keygen столкнулся с некоторыми более ранними проблемами с файлами, которые записывались неправильно, и это исправило это для меня

МЕТА
источник