Jak włączyć SSH do WSL


30

Długoletni czytelnik, pierwszy pytający.

Postępowałem zgodnie z instrukcjami w tej odpowiedzi:

Jak mogę włączyć SSH do „Bash na Ubuntu na Windows 10”?

Próbuję SSH z PuTTY w Windows na tym samym komputerze. Korzystanie z portu 22, który pasuje do mojego pliku konfiguracyjnego. Próbowałem zarówno 127.0.0.1, jak i 127.0.1.1. Nadal jednak pojawia się „odmowa dostępu”:

wprowadź opis zdjęcia tutaj

Ostatecznie mam nadzieję skonfigurować zdalną kompilację programu Visual Studio, ale jak dotąd nie byłem w stanie uzyskać dostępu zdalnego. Jakie kolejne kroki powinienem podjąć?

Process Hacker pokazuje to dla portu 22 (nie jestem pewien, co to oznacza):

wprowadź opis zdjęcia tutaj

Oto zawartość / 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

„Odmowa dostępu” oznacza, że ​​podajesz nieprawidłowe kontobase1
Ramhound

1
Na pewno nie podam niepoprawnego hasła. Zmieniłem to i spróbowałem kilka razy, aby się upewnić.
Basel Alghanem,

Próbowałeś się rozejrzeć ?
Matt Clark,

1
Absolutnie próbowałem rozejrzeć się przez kilka godzin dziś rano. Niestety ogólnie jestem nie do poznania w tej dziedzinie. Próbowałem skomentować wiersz zgodnie z sugestią w odpowiedzi, ale to nie pomogło. Czy uważasz, że próba uwierzytelnienia na podstawie klucza może działać?
Basel Alghanem,

1
Przełączono na port 2200 (linia 5 w sshd_config) i udało się zalogować do WSL. Myślę, że Windows używał portu 22, więc Linux nie mógł? Dodatkowo sshd pojawił się w Process Hacker jako nasłuchujący na porcie 2200, gdzie wcześniej wcale się nie pojawiał. Czy przesyłam to jako odpowiedź na moje pytanie?
Basel Alghanem,

Odpowiedzi:


25

Zmień port 22 na inny, na przykład 2222, w pliku /etc/ssh/sshd_config, a następnie uruchom ponownie usługę ssh przez Communa sudo service ssh --full-restart, z powodzeniem się zalogujesz. Ale nie znam powodu.

Próbuję też użyć go jako zdalnego serwera gdb dla Visual Studio VisualGDB, nie działa dobrze. VisualGDB będzie go obsługiwał w następnej wersji, jak pokazuje oficjalna strona internetowa. Link to https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274


Teraz obsługuje go VisualGDB, więcej szczegółów na visualgdb.com/tutorials/linux/win10
nul lun

4
Wynika to z faktu, że system Windows może uruchamiać SSH Server Broker na porcie 22. O ile nie wiesz na pewno, że go potrzebujesz, możesz go bezpiecznie wyłączyć. Jest używany do niektórych procedur podczas programowania.
UnclickableCharacter

3
Nie zapomnij otworzyć portu w Zaporze systemu Windows.
dthor

3
Prawdopodobnie konieczna będzie również zmiana uwierzytelnienia. Domyślnie wymaga kluczy ssh do klienta. Jeśli chcesz klasycznego loginu użytkownika / hasła, ustaw tę konfigurację w /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio

1
Musiałem włączyć regułę zapory ogniowej, jak wspomniano @dthor, i włączyć uwierzytelnianie hasła, jak wspomniano w Tonatio, wtedy zadziałało.
sdkks

10

Port 22 nie działa, ponieważ system Windows jest wyposażony we wbudowany serwer SSH.

Windows 10 jest wyposażony w serwer SSH i należy go wyłączyć lub zmienić port SSH na WSL. Wybrałem to drugie i używam portu 2200 dla WSL SSH.

Źródło: https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx


Jest to właściwie jedyna poprawna odpowiedź na to pytanie, nawet odpowiedź zaakceptowana, wskazująca na to, że powód musiał zostać zmieniony. Za tę odpowiedź przyznam nagrodę za 24 godziny.
Ramhound

2

Podczas logowania użyj hasła do konta Microsoft Windows, a nie hasła użytkownika WSL Linux. Zostaniesz zalogowany do katalogu domowego Windows z uruchomionym cmd.exe. Wpisz polecenie, /windows/system32/bash.exe ~ --loginaby zalogować się do katalogu głównego WSL i wykonać swój .profile.


1

WSL: Zwróć także uwagę na „UsePrivilegeSeparation no”. W przeciwnym razie uruchomienie serwera na konsoli (/ usr / sbin / sshd -Dddde) zakończy się niepowodzeniem, a PrivilegeSeparation nie zostanie zaimplementowany ...


1
UsePrivilegeSeparation jest przestarzałe
mFeinstein

0

To, co zrobiłem, to sudo ssh-keygen zamiast ssh-keygen napotkałem pewne wcześniejsze problemy z niepoprawnym pisaniem plików i to naprawiło to dla mnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.