Come SSH in WSL


30

Lettore di lunga data, domanda per la prima volta.

Ho seguito le istruzioni in questa risposta:

Come posso SSH in "Bash su Ubuntu su Windows 10"?

Sto provando a SSH da PuTTY in Windows sulla stessa macchina. Uso della porta 22, che corrisponde al mio file di configurazione. Ho provato sia 127.0.0.1 che 127.0.1.1. Tuttavia, sto ancora ricevendo "accesso negato":

inserisci qui la descrizione dell'immagine

In definitiva, spero di impostare una build remota di Visual Studio, ma finora non sono stato in grado di entrare in remoto. Quali passi successivi dovrei prendere?

Process Hacker lo mostra per la porta 22 (non sono sicuro di cosa significhi):

inserisci qui la descrizione dell'immagine

Ecco i contenuti di / 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

Un "Accesso negato" significa che stai fornendo la password errata all'accountbase1
Ramhound,

1
Sicuramente non sto fornendo la password errata. L'ho modificato e riprovato alcune volte solo per essere sicuro.
Basilea Alghanem,

Hai provato a guardarti intorno ?
Matt Clark,

1
Ho assolutamente provato a guardarmi intorno, per un paio d'ore questa mattina. Purtroppo sono generalmente inconoscibile in questo settore. Ho provato a commentare la riga come suggerito in una risposta, e questo non ha aiutato. Pensi che provare l'autenticazione basata su chiave potrebbe funzionare?
Basilea Alghanem,

1
Passato alla porta 2200 (linea 5 in sshd_config) ed è stato in grado di accedere correttamente a WSL. Immagino che Windows stesse usando la porta 22, quindi Linux non poteva? Inoltre, sshd è apparso in Process Hacker mentre ascoltava la porta 2200, dove prima non si presentava affatto. Devo inviarlo come risposta alla mia domanda?
Basilea Alghanem,

Risposte:


25

Cambia la porta 22 in un'altra, come 2222, nel file /etc/ssh/sshd_config, quindi riavvia il servizio ssh dal comune sudo service ssh --full-restart, accederai con successo. Ma non conosco il motivo.

Provo anche ad usarlo come server gdb remoto per Visual Studio di VisualGDB, non funziona bene. VisualGDB lo supporterà nella prossima versione come mostra il sito Web ufficiale. Il link è https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274


Ora VisualGDB lo supporta, maggiori dettagli su visualgdb.com/tutorials/linux/win10
nul lun

4
Questo perché Windows potrebbe eseguire SSH Server Broker sulla porta 22. A meno che tu non sappia per certo che ne hai bisogno, può essere disabilitato in modo sicuro. Viene utilizzato per alcune procedure durante lo sviluppo.
UnclickableCharacter

3
Non dimenticare di aprire la porta in Windows Firewall.
dal

3
Probabilmente, dovrai anche cambiare l'autenticazione. Per impostazione predefinita richiede chiavi ssh per il client. Se si desidera il classico login utente / password, impostare questa configurazione in /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio

1
Ho dovuto abilitare la regola del firewall come menzionato da @dthor e abilitare l'autenticazione della password come Tonatio ha menzionato, quindi ha funzionato.
sdkks,

10

La porta 22 non funziona perché Windows viene fornito con un server SSH incorporato.

Windows 10 viene fornito con un server SSH e dovrà essere disabilitato o la porta che verrà utilizzata per SSH su WSL dovrà essere modificata. Ho scelto di fare quest'ultimo e usare la porta 2200 per WSL SSH.

Fonte: https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx


Questa è in realtà l'unica risposta corretta a questa domanda, anche la risposta accettata, suggerisce che questa è la ragione per cui la porta doveva essere cambiata. Darò una risposta a questa risposta in 24 ore.
Ramhound,

2

Quando effettui l'accesso, utilizza la password dell'account Microsoft Windows, non la password dell'utente WSL Linux. Verrà eseguito l'accesso alla directory principale di Windows che esegue cmd.exe. Immettere il comando /windows/system32/bash.exe ~ --loginper accedere alla directory principale WSL ed eseguire il proprio .profile.


1

WSL: Cerca anche 'UsePrivilegeSeparation no' Altrimenti, l'esecuzione del server sulla console (/ usr / sbin / sshd -Dddde) fallirà con PrivilegeSeparation non implementato ...


1
UsePrivilegeSeparation è obsoleto
mFeinstein

0

Quello che ho fatto è stato sudo ssh-keygen invece di ssh-keygen riscontrato alcuni problemi precedenti con i file non scritti correttamente e questo mi ha risolto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.