如何通过SSH进入WSL


30

长期阅读者,首次提问。

我按照此答案中的说明进行操作:

如何通过SSH进入“ Windows 10上的Ubuntu上的Bash”?

我正在尝试在同一台计算机上的Windows中从PuTTY进行SSH。使用端口22,该端口与我的配置文件匹配。尝试了127.0.0.1和127.0.1.1。但是,我仍然收到“访问被拒绝”的信息:

在此处输入图片说明

最终,我希望建立一个Visual Studio远程构建,但是到目前为止,我根本无法远程进入。我应该采取什么下一步措施?

Process Hacker在端口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

“拒绝访问”意味着你的帐户提供的密码不正确base1
Ramhound

1
我绝对不会提供错误的密码。我已对其进行更改并重试了几次以确保。
巴塞尔Alghanem


1
我绝对没有尝试尝试,今天早上几个小时。不幸的是,我通常在这个领域是无知的。我尝试按照答案中的建议注释掉该行,但这没有帮助。您认为尝试基于密钥的身份验证是否可行?
巴塞尔Alghanem

1
切换到端口2200(sshd_config中的第5行),并且能够成功登录WSL。我猜Windows正在使用端口22,所以Linux不能吗?另外,sshd在侦听端口2200时出现在Process Hacker中,以前根本没有出现。我是否将此作为我的问题的答案?
巴塞尔Alghanem

Answers:


25

在文件中将22端口更改为另一个端口,例如2222,/etc/ssh/sshd_config然后通过sudo service ssh --full-restartcommond 重新启动ssh服务,您将成功登录。但是我不知道原因。

我也尝试通过VisualGDB将其用作Visual Studio的远程gdb服务器,但效果不佳。官方网站显示,VisualGDB将在下一版本中提供支持。链接为https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274


现在,VisualGDB支持它,有关更多信息,请访问visualgdb.com/tutorials/linux/win10
nul lun

4
这是因为Windows可能会在端口22上运行SSH Server Broker。除非您确定要使用它,否则可以安全地将其禁用。在开发过程中用于某些过程。
UnclickableCharacter

3
不要忘记在Windows防火墙中打开端口。
dthor

3
可能您还需要更改身份验证。默认情况下,它需要客户端的ssh密钥。如果您希望经典用户名/密码登录,请在/etc/ssh/sshd_config以下位置设置此配置:PubkeyAuthentication no PasswordAuthentication yes
Tonatio

1
我必须启用提到的@dthor这样的防火墙规则,并启用提到的Tonatio这样的密码身份验证,然后它才能工作。
sdkks

10

端口22不起作用,因为Windows带有内置的SSH服务器。

Windows 10随附有SSH服务器,需要禁用它,或者需要更改WSL上用于SSH的端口。我选择了后者,并将端口2200用于WSL SSH。

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


这实际上是该问题的唯一正确答案,即使是已接受的答案也暗示了这是必须更改端口的原因。我将在24小时内奖励这个答案。
Ramhound19年

2

登录时,请使用Windows Microsoft帐户密码,而不是WSL Linux用户密码。您将登录到运行cmd.exe的Windows主目录。输入命令/windows/system32/bash.exe ~ --login登录到WSL主目录并执行.profile


1

WSL:还请注意“ UsePrivilegeSeparation no”,否则,在控制台上运行服务器(/ usr / sbin / sshd -Dddde)将失败,且未实现PrivilegeSeparation ...


1
UsePrivilegeSeparation已经过时
mFeinstein

0

我所做的是sudo ssh-keygen而不是ssh-keygen遇到了一些较早的问题,文件无法正确写入,这为我解决了问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.