Як SSH в WSL


26

Читач давнього часу, перший запитувач.

Я дотримувався вказівок у цій відповіді:

Як я можу SSH перейти в "Bash на Ubuntu в Windows 10"?

Я намагаюся SSH з PuTTY в Windows на тій же машині. Використовуючи порт 22, який відповідає моєму конфігураційному файлу. Спробував і 127.0.0.1, і 127.0.1.1. Однак мені все ще залишається "заборонено доступ":

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

Зрештою, я сподіваюся створити віддалену версію Visual Studio, але я поки що взагалі не міг увійти дистанційно. Які наступні кроки я повинен зробити?

Хакер процесів показує це для порту 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


1
Я точно не надаю неправильний пароль. Я змінив його і повторив кілька разів, щоб переконатися.
— Базель Алганем

Ти спробував озирнутися ?
— Метт Кларк

1
Я абсолютно намагався озирнутися на пару годин цього ранку. На жаль, я взагалі не знаю в цій галузі. Я спробував прокоментувати рядок, як було запропоновано у відповіді, і це не допомогло. Як ви вважаєте, чи може спробувати авторизований ключ?
— Базель Алганем

1
Перейшов до порту 2200 (рядок 5 в sshd_config) і зміг успішно увійти в WSL. Я думаю, що Windows використовувала порт 22, тому Linux не міг? Крім того, sshd з'явився в Process Hacker як прослуховування порту 2200, де він взагалі не з'являвся. Я подаю це як відповідь на моє запитання?
— Базель Алганем

Відповіді:


24

Змініть 22-й порт на інший, наприклад 2222, у файлі /etc/ssh/sshd_config, після чого перезапустіть службу ssh commond sudo service ssh --full-restart, ви успішно увійдете в систему. Але я не знаю причини.

Я також намагаюся використовувати його як віддалений сервер gdb для візуальної студії від VisualGDB, він не працює добре. VisualGDB підтримає його в наступній версії, як показує офіційний веб-сайт. Посилання https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274


Тепер, VisualGDB підтримує його, більше деталей на visualgdb.com/tutorials/linux/win10
— nul

4
Це тому, що Windows може запустити SSH Server Broker на порт 22. Якщо ви точно не знаєте, що вам це потрібно, його можна безпечно відключити. Він використовується для деяких процедур під час розробки.
— користувач318054

3
Не забудьте відкрити порт у брандмауері Windows.
— dthor

2
Можливо, вам також знадобиться змінити автентифікацію. За замовчуванням для клієнта потрібні ключі ssh. Якщо ви хочете класичного входу користувача / пароля, встановіть цю конфігурацію в /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
— Tonatio

1
Мені довелося ввімкнути правило брандмауера на зразок згаданого @dthor і ввімкнути аутентифікацію пароля, як, наприклад, згаданий Tonatio.
— sdkks

3

Порт 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


2

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


1

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


UsePrivilegeSeparation застаріла
— mFeinstein

0

Що я зробив - це sudo ssh-keygen замість ssh-keygen зіткнувся з деякими попередніми проблемами з файлами, які не пишуть правильно, і це вирішило для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.