Bagaimana SSH ke WSL

30

Pembaca lama, penanya pertama kali.

Saya mengikuti instruksi dalam jawaban ini:

Bagaimana saya bisa SSH menjadi "Bash di Ubuntu pada Windows 10"?

Saya mencoba SSH dari Putty di Windows pada mesin yang sama. Menggunakan Port 22, yang cocok dengan file konfigurasi saya. Mencoba keduanya 127.0.0.1 dan 127.0.1.1. Namun, saya masih mendapatkan "akses ditolak":

masukkan deskripsi gambar di sini

Pada akhirnya saya berharap untuk membuat membangun jarak jauh Visual Studio, tapi sejauh ini saya tidak bisa masuk sama sekali. Apa langkah selanjutnya yang harus saya ambil?

Peretas Proses menunjukkan ini untuk port 22 (tidak yakin apa artinya ini):

masukkan deskripsi gambar di sini

Inilah isi dari / 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
sumber
"Akses Ditolak" berarti Anda memberikan kata sandi yang salah ke akunbase1
Ramhound
1
Saya jelas tidak memberikan kata sandi yang salah. Saya telah mengubahnya dan mencoba lagi beberapa kali hanya untuk memastikan.
Basel Alghanem
Apakah Anda mencoba melihat-lihat ?
Matt Clark
1
Saya benar-benar mencoba melihat sekeliling, selama beberapa jam pagi ini. Sayangnya saya pada umumnya tidak mengetahui di bidang ini. Saya mencoba berkomentar seperti yang disarankan dalam jawaban, dan itu tidak membantu. Apakah Anda pikir mencoba autent berbasis kunci mungkin berhasil?
Basel Alghanem
1
Beralih ke port 2200 (baris 5 di sshd_config) dan berhasil masuk ke WSL. Saya kira Windows menggunakan port 22 sehingga Linux tidak bisa? Selain itu, sshd muncul di Process Hacker sebagai mendengarkan port 2200, di mana ia tidak muncul sama sekali sebelumnya. Apakah saya mengirimkan ini sebagai jawaban untuk pertanyaan saya?
Basel Alghanem

Jawaban:

25

Ubah port 22 ke yang lain, seperti 2222, dalam file /etc/ssh/sshd_config, lalu restart layanan ssh dengan commond sudo service ssh --full-restart, Anda akan berhasil login. Tapi saya tidak tahu alasannya.

Saya juga mencoba menggunakannya sebagai server gdb jarak jauh untuk studio visual oleh VisualGDB, itu tidak berfungsi dengan baik. VisualGDB akan mendukungnya dalam versi berikutnya sebagaimana situs web resmi tunjukkan. Tautannya adalah https://sysprogs.com/w/forums/topic/visualgdb-with-windows-10-anniversary-update-linux-support/#post- 9274

nul lun
sumber
Sekarang, VisualGDB mendukungnya, detail lebih lanjut ke visualgdb.com/tutorials/linux/win10
nul lun
4
Ini karena Windows mungkin menjalankan SSH Server Broker pada port 22. Kecuali Anda tahu pasti bahwa Anda memerlukannya, ini dapat dinonaktifkan dengan aman. Ini digunakan untuk beberapa prosedur selama pengembangan.
UnclickableCharacter
3
Jangan lupa untuk membuka port di Windows Firewall.
dthor
3
Mungkin, Anda juga perlu mengubah otentikasi. Secara default itu membutuhkan kunci ssh ke klien. Jika Anda ingin login pengguna / kata sandi klasik, atur konfigurasi ini di /etc/ssh/sshd_config:PubkeyAuthentication no PasswordAuthentication yes
Tonatio
1
Saya harus mengaktifkan aturan firewall seperti @dthor yang disebutkan dan mengaktifkan kata sandi auth seperti Tonatio yang disebutkan kemudian berfungsi.
SDK
10

Port 22 tidak berfungsi karena Windows dilengkapi dengan server SSH bawaan.

Windows 10 dilengkapi dengan server SSH, dan itu perlu dinonaktifkan atau port yang akan digunakan untuk SSH di WSL perlu diubah. Saya memilih untuk melakukan yang terakhir dan menggunakan port 2200 untuk WSL SSH.

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

ayao1337
sumber
Ini sebenarnya satu-satunya jawaban yang benar untuk pertanyaan ini, bahkan jawaban yang diterima, mengisyaratkan bahwa alasannya pelabuhan harus diubah. Saya akan memberi hadiah ini hadiah dalam 24 jam.
Ramhound
2

Saat Anda masuk, gunakan kata sandi Akun Microsoft Windows Anda, bukan kata sandi pengguna WSL Linux Anda. Anda akan masuk ke direktori home Windows Anda yang menjalankan cmd.exe. Masukkan perintah /windows/system32/bash.exe ~ --loginuntuk masuk ke direktori home WSL Anda dan jalankan .profile.

rhmcullough
sumber
1

WSL: Lihat juga 'UsePrivilegeSeparation no' Jika tidak, menjalankan server pada konsol (/ usr / sbin / sshd -Dddde) akan gagal dengan PrivilegeSeparation tidak diimplementasikan ...

ga_t
sumber
1
UsePrivilegeSeparation sudah tidak digunakan lagi
mFeinstein
0

Apa yang saya lakukan adalah sudo ssh-keygen bukannya ssh-keygen mengalami beberapa masalah sebelumnya dengan file tidak menulis dengan benar dan ini memperbaikinya bagi saya

META
sumber