Comment SSH dans WSL

30

Lecteur de longue date, premier poseur de questions.

J'ai suivi les instructions de cette réponse:

Comment puis-je SSH dans «Bash sur Ubuntu sur Windows 10»?

J'essaye de SSH de PuTTY dans Windows sur la même machine. Utilisation du port 22, qui correspond à mon fichier de configuration. J'ai essayé à la fois 127.0.0.1 et 127.0.1.1. Cependant, je reçois toujours un "accès refusé":

entrez la description de l'image ici

En fin de compte, j'espère mettre en place une génération à distance Visual Studio, mais je n'ai jusqu'à présent pas pu accéder à distance du tout. Quelles prochaines étapes dois-je prendre?

Process Hacker le montre pour le port 22 (je ne sais pas ce que cela signifie):

entrez la description de l'image ici

Voici le contenu de / 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
Basel Alghanem
la source
Un "Accès refusé" signifie que vous fournissez un mot de passe incorrect au comptebase1
Ramhound
1
Je ne fournis certainement pas le mot de passe incorrect. Je l'ai changé et réessayé plusieurs fois juste pour être sûr.
Basel Alghanem
Avez-vous essayé de regarder autour de vous ?
Matt Clark
1
J'ai absolument essayé de regarder autour de moi, pendant quelques heures ce matin. Malheureusement, je ne sais généralement pas dans ce domaine. J'ai essayé de commenter la ligne comme suggéré dans une réponse, et cela n'a pas aidé. Pensez-vous qu'essayer l'authentification par clé pourrait fonctionner?
Basel Alghanem
1
Passé au port 2200 (ligne 5 dans sshd_config) et a réussi à se connecter à WSL. Je suppose que Windows utilisait le port 22, donc Linux ne pouvait pas? De plus, sshd est apparu dans Process Hacker comme écoutant le port 2200, où il n'apparaissait pas du tout auparavant. Dois-je soumettre ceci comme réponse à ma question?
Basel Alghanem

Réponses:

25

Remplacez le port 22 par un autre, tel que 2222, dans le fichier /etc/ssh/sshd_config, puis redémarrez le service ssh par la commande sudo service ssh --full-restart, vous réussirez à vous connecter , mais je ne connais pas la raison.

J'essaie également de l'utiliser comme serveur gdb distant pour Visual Studio par VisualGDB, cela ne fonctionne pas bien. VisualGDB le supportera dans la prochaine version comme le montre le site officiel. Le lien est https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274

nul lun
la source
Maintenant, VisualGDB le supporte, plus de détails sur visualgdb.com/tutorials/linux/win10
nul lun
4
En effet, Windows peut exécuter SSH Server Broker sur le port 22. À moins que vous ne sachiez avec certitude que vous en avez besoin, il peut être désactivé en toute sécurité. Il est utilisé pour certaines procédures pendant le développement.
UnclickableCharacter
3
N'oubliez pas d'ouvrir le port dans le pare-feu Windows.
2017
3
Vous devrez probablement également modifier l'authentification. Par défaut, il nécessite des clés ssh pour le client. Si vous voulez la connexion utilisateur / mot de passe classique, définissez cette configuration dans /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio
1
J'ai dû activer la règle de pare-feu comme @dthor mentionné et activer l'authentification par mot de passe comme Tonatio l'a mentionné, puis cela a fonctionné.
sdkks
10

Le port 22 ne fonctionne pas car Windows est livré avec un serveur SSH intégré.

Windows 10 est livré avec un serveur SSH, et il devra être désactivé ou le port qui sera utilisé pour SSH sur WSL devra être changé. J'ai choisi de faire ce dernier et d'utiliser le port 2200 pour WSL SSH.

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

ayao1337
la source
C'est en fait la seule bonne réponse à cette question, même la réponse acceptée, laisse entendre que c'est la raison pour laquelle le port a dû être changé. Je vais attribuer une prime à cette réponse dans 24 heures.
Ramhound
2

Lorsque vous vous connectez, utilisez votre mot de passe de compte Microsoft Windows, pas votre mot de passe utilisateur WSL Linux. Vous serez connecté à votre répertoire personnel Windows exécutant cmd.exe. Entrez la commande /windows/system32/bash.exe ~ --loginpour vous connecter à votre répertoire personnel WSL et exécutez votre .profile.

rhmccullough
la source
1

WSL: recherchez également 'UsePrivilegeSeparation no' Sinon, l'exécution du serveur sur la console (/ usr / sbin / sshd -Dddde) échouera avec PrivilegeSeparation non implémenté ...

flingue
la source
1
UsePrivilegeSeparation est obsolète
mFeinstein
0

Ce que j'ai fait, c'est que sudo ssh-keygen au lieu de ssh-keygen a rencontré des problèmes antérieurs avec des fichiers qui n'écrivaient pas correctement et cela m'a corrigé

META
la source