Cách SSH vào WSL


30

Người đọc lâu, người hỏi lần đầu.

Tôi đã làm theo hướng dẫn trong câu trả lời này:

Làm cách nào tôi có thể SSH vào Wikipedia Bash trên Ubuntu trên Windows 10?

Tôi đang cố gắng SSH từ PuTTY trong Windows trên cùng một máy. Sử dụng Cổng 22, khớp với tệp cấu hình của tôi. Đã thử cả 127.0.0.1 và 127.0.1.1. Tuy nhiên, tôi vẫn nhận được "quyền truy cập bị từ chối":

nhập mô tả hình ảnh ở đây

Cuối cùng, tôi hy vọng sẽ thiết lập một bản dựng từ xa Visual Studio, nhưng từ trước đến nay tôi không thể truy cập từ xa. Tôi nên làm những bước tiếp theo?

Process Hacker hiển thị điều này cho cổng 22 (không chắc điều này có nghĩa là gì):

nhập mô tả hình ảnh ở đây

Dưới đây là nội dung của / 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

"Truy cập bị từ chối" có nghĩa là bạn đang cung cấp mật khẩu không chính xác cho tài khoảnbase1
Ramhound

1
Tôi chắc chắn không cung cấp mật khẩu không chính xác. Tôi đã thay đổi nó và thử lại một vài lần chỉ để đảm bảo.
Basel Al Afghanistanem

Bạn đã thử nhìn xung quanh ?
Matt Clark

1
Tôi hoàn toàn đã thử nhìn xung quanh, trong một vài giờ sáng nay. Thật không may, tôi thường không nhận thức được trong lĩnh vực này. Tôi đã cố gắng bình luận dòng như đề xuất trong một câu trả lời, và điều đó không giúp được gì. Bạn có nghĩ rằng thử auth dựa trên khóa có thể làm việc?
Basel Al Afghanistanem

1
Đã chuyển sang cổng 2200 (dòng 5 trong sshd_config) và có thể đăng nhập thành công vào WSL. Tôi đoán Windows đã sử dụng cổng 22 nên Linux không thể? Ngoài ra, sshd xuất hiện trong Process Hacker khi nghe cổng 2200, nơi nó hoàn toàn không xuất hiện trước đó. Tôi có gửi câu hỏi này như một câu trả lời cho câu hỏi của tôi không?
Basel Al Afghanistanem

Câu trả lời:


25

Thay đổi cổng 22 thành một cổng khác, chẳng hạn như 2222, trong tệp /etc/ssh/sshd_config, sau đó khởi động lại dịch vụ ssh bằng commond sudo service ssh --full-restart, bạn sẽ đăng nhập thành công. Nhưng tôi không biết lý do.

Tôi cũng thử sử dụng nó như một máy chủ gdb từ xa cho Visual studio bởi VisualGDB, nó không hoạt động tốt. VisualGDB sẽ hỗ trợ nó trong phiên bản tiếp theo như trang web chính thức hiển thị. Liên kết là https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-annlahoma-update-linux-support/#post- 9274


Bây giờ, VisualGDB hỗ trợ nó, thêm chi tiết cho visualgdb.com/tutorials/linux/win10
nul lun

4
Điều này là do Windows có thể chạy SSH Server Broker trên cổng 22. Trừ khi bạn biết chắc chắn rằng bạn cần nó, nó có thể bị vô hiệu hóa một cách an toàn. Nó được sử dụng cho một số thủ tục trong quá trình phát triển.
UnclickableCharacter

3
Đừng quên mở cổng trong Tường lửa Windows.
dthor

3
Có lẽ, bạn cũng sẽ cần phải thay đổi xác thực. Theo mặc định, nó yêu cầu các khóa ssh cho máy khách. Nếu bạn muốn đăng nhập người dùng / mật khẩu cổ điển, hãy đặt cấu hình này vào /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio

1
Tôi đã phải kích hoạt quy tắc tường lửa như @dthor đã đề cập và bật mật khẩu auth như Tonatio đã đề cập sau đó nó hoạt động.
sdkks

10

Cổng 22 không hoạt động vì Windows đi kèm với máy chủ SSH tích hợp.

Windows 10 đi kèm với máy chủ SSH và nó sẽ cần phải bị vô hiệu hóa hoặc cổng sẽ được sử dụng cho SSH trên WSL sẽ cần phải được thay đổi. Tôi đã chọn làm cái sau và sử dụng cổng 2200 cho WSL SSH.

Nguồn: https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subystem-on-linux.aspx


Đây thực sự là câu trả lời đúng duy nhất cho câu hỏi này, ngay cả câu trả lời được chấp nhận, gợi ý rằng đây là lý do cổng phải được thay đổi. Tôi sẽ trao giải thưởng này cho một tiền thưởng trong 24 giờ.
Ramhound

2

Khi bạn đăng nhập, hãy sử dụng mật khẩu Tài khoản Microsoft Microsoft chứ không phải mật khẩu người dùng WSL Linux của bạn. Bạn sẽ đăng nhập vào thư mục Windows của bạn đang chạy cmd.exe. Nhập lệnh /windows/system32/bash.exe ~ --loginđể đăng nhập vào thư mục nhà WSL của bạn và thực hiện .profile.


1

WSL: Ngoài ra, hãy tìm kiếm 'UsePriv đặc biệt không phải trả tiền' Nếu không, việc chạy máy chủ trên bảng điều khiển (/ usr / sbin / sshd -Dddde) sẽ không thành công khi Đặc quyền không được triển khai ...


1
UsePriv đặc biệt Thanh toán không được chấp nhận
mFeinstein

0

Những gì tôi đã làm là sudo ssh-keygen thay vì ssh-keygen gặp phải một số vấn đề trước đó với các tệp không được viết chính xác và điều này đã khắc phục nó cho tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.