Как сделать 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


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

2

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


1

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


1
UsePrivilegeSeparation устарела
— mFeinstein

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.