Como SSH no WSL

30

Leitor de longa data, quem faz perguntas pela primeira vez.

Eu segui as instruções nesta resposta:

Como posso fazer o SSH no "Bash no Ubuntu no Windows 10"?

Estou tentando fazer o SSH do PuTTY no Windows na mesma máquina. Usando a porta 22, que corresponde ao meu arquivo de configuração. Tentei 127.0.0.1 e 127.0.1.1. No entanto, ainda estou recebendo "acesso negado":

insira a descrição da imagem aqui

Por fim, espero configurar uma compilação remota do Visual Studio, mas até agora não consegui entrar remotamente. Quais próximos passos devo seguir?

O Process Hacker mostra isso na porta 22 (não sabe o que isso significa):

insira a descrição da imagem aqui

Aqui está o conteúdo 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
fonte
Um "acesso negado" significa que você está fornecendo a senha incorreta para a contabase1
Ramhound
11
Definitivamente, não estou fornecendo a senha incorreta. Eu mudei e tentei algumas vezes apenas para ter certeza.
Basel Alghanem 12/09/16
Você tentou olhar em volta ?
22816 Matt
11
Eu absolutamente tentei olhar em volta, por algumas horas esta manhã. Infelizmente, geralmente não tenho conhecimento nesta área. Tentei comentar a linha como sugerido em uma resposta, e isso não ajudou. Você acha que tentar a autenticação baseada em chave pode funcionar?
Basel Alghanem 12/09/16
11
Comutado para a porta 2200 (linha 5 em sshd_config) e conseguiu efetuar login com êxito no WSL. Eu acho que o Windows estava usando a porta 22, então o Linux não podia? Além disso, o sshd apareceu no Process Hacker como ouvindo a porta 2200, onde não aparecia antes. Submeto isso como resposta à minha pergunta?
Basel Alghanem 12/09/16

Respostas:

25

Altere a porta 22 para outra, como 2222, no arquivo e /etc/ssh/sshd_config, em seguida, reinicie o serviço ssh pelo commond sudo service ssh --full-restart, você efetuará login com êxito. Mas não sei o motivo.

Também tento usá-lo como um servidor gdb remoto para o visual studio do VisualGDB, ele não funciona bem. O VisualGDB o apoiará na próxima versão, como mostra o site oficial. O link é https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274

nul lun
fonte
Agora, o VisualGDB o suporta, mais detalhes em visualgdb.com/tutorials/linux/win10
nul lun
4
Isso ocorre porque o Windows pode executar o SSH Server Broker na porta 22. A menos que você tenha certeza de que precisa, ele pode ser desativado com segurança. É usado para alguns procedimentos durante o desenvolvimento.
UnclickableCharacter
3
Não esqueça de abrir a porta no Firewall do Windows.
dthor
3
Provavelmente, você também precisará alterar a autenticação. Por padrão, ele requer chaves ssh para o cliente. Se você deseja fazer o login clássico de usuário / senha, defina esta configuração em /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio
11
Eu tive que habilitar a regra de firewall como @dthor mencionado e habilitar a autenticação de senha como Tonatio mencionado, então funcionou.
Sdkks
10

A porta 22 não funciona porque o Windows vem com um servidor SSH embutido.

O Windows 10 vem com um servidor SSH e precisará ser desativado ou a porta que será usada para SSH no WSL precisará ser alterada. Eu escolhi fazer o último e usar a porta 2200 para o WSL SSH.

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

ayao1337
fonte
Esta é realmente a única resposta correta para essa pergunta, mesmo a resposta aceita, sugere que essa é a razão pela qual a porta teve que ser alterada. Vou premiar esta resposta em 24 horas.
Ramhound 13/11/19
2

Ao fazer login, use sua senha da Conta do Microsoft Windows, não sua senha de usuário do WSL Linux. Você estará conectado ao diretório inicial do Windows executando o cmd.exe. Digite o comando /windows/system32/bash.exe ~ --loginpara efetuar login no diretório inicial do WSL e execute o .profile.

rhmccullough
fonte
1

WSL: Procure também 'UsePrivilegeSeparation no'. Caso contrário, a execução do servidor no console (/ usr / sbin / sshd -Dddde) falhará com o PrivilegeSeparation não implementado ...

ga_t
fonte
11
UsePrivilegeSeparation está obsoleto
mFeinstein 27/08
0

O que fiz foi o sudo ssh-keygen, em vez do ssh-keygen, que teve alguns problemas anteriores com arquivos que não estavam sendo gravados corretamente e isso foi corrigido para mim

META
fonte