Come posso SSH in "Bash su Ubuntu su Windows 10"?


99

Ho Windows 10 Anniversary Edition con "Bash su Ubuntu su Windows" installato e funzionante. Mi piacerebbe essere in grado di SSH in questa istanza di Ubuntu, ma anche se ho openssh-server installato e configurato (e in ascolto sulla porta 2200), quando provo a ssh su "localhost: 2200", mi dice "Server inaspettatamente connessione di rete chiusa ".

Qualcuno è stato in grado di farlo con successo?

inserisci qui la descrizione dell'immagine


Utilizzando Process Hacker e guardando la scheda 'Rete', mostra che sshd (in esecuzione su Ubuntu su Windows 10) è in ascolto sulla porta locale 2200.
Mick,

e se provi a connetterti all'indirizzo IP del sistema? Ubuntu spesso mappa gli indirizzi di loopback in modo diverso rispetto a Windows e utilizza valori aggiuntivi in ​​127.0.0.0/8 (spesso 127.0.1.1)
Frank Thomas

@Ramhound: non è vero. Localhost è localhost e tutto è condiviso. Puoi farlo perfettamente links http://localhost/dal sottosistema Linux e vedere la pagina Web fornita da IIS sul lato Windows. Non c'è separazione.
Sami Kuhmonen,

Risposte:


120

L'ho fatto funzionare; Ecco come.

Disinstallato ssh-server, reinstallato e verificato che sia iniziato con

sudo service ssh --full-restart

Assicurati di aver disattivato l'accesso root e di aver aggiunto un altro utente nel file di configurazione.

Sono stato in grado di connettermi al sottosistema su 127.0.0.1:22 come previsto. Spero che questo ti possa aiutare.

Ecco uno screenshot.

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config e non consentire l'accesso root impostando PermitRootLogin no
  4. Quindi aggiungi una linea sotto di essa che dice:

    AllowUsers yourusername

    e assicurarsi che PasswordAuthenticationsia impostato su yesse si desidera accedere utilizzando una password.

  5. Disabilita la separazione dei privilegi aggiungendo / modificando: UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. Connettiti al tuo sottosistema Linux da Windows usando un client ssh come PuTTY.


2
non ho dovuto farlo - strano .. ma ricorda che questo è ancora in fase beta quindi i risultati possono variare
Master Azazel

7
Inoltre ho dovuto: Arrestare / disabilitare i servizi di broker di server SSH di Windows 10 dal pannello di controllo dei servizi e impostare: PubkeyAuthentication no in sshdconfig
math0ne

6
Avevo anche bisogno di aggiungere una regola firewall. Esisteva una regola esistente, ma era solo per il proxy server SSH di Windows e quando ho fermato quel servizio, il firewall ha bloccato il traffico sulla porta 22.
Pierre-Luc Paour,

2
Ho anche dovuto cambiare le porte ( Port 2222nel /etc/ssh/sshd_configfile), se non il server ssh di Windows ha rilevato la connessione sulla porta 22.
Arod

2
@ArtemRussakovskii fermano l'intero sottosistema Linux ogni volta che chiudi la finestra bash ...
Sakher,

27

Poiché l'implementazione di Windows non fornisce chroot, è necessario modificare / etc / ssh / sshd_config

UsePrivilegeSeparation no

Inoltre dovrai creare un utente usando il comando useradd o giù di lì.


4
Questo passaggio è stato essenziale per farlo funzionare.
Mick,

1
Ero curioso, quindi l'ho trovato su freebsd.org/cgi/man.cgi?sshd_config(5 ) : UsePrivilegeSeparation:
krs013

Specifica se sshd (8) separa i privilegi creando un processo figlio senza privilegi per gestire il traffico di rete in entrata. Dopo un'autenticazione corretta, verrà creato un altro processo che ha il privilegio dell'utente autenticato. L'obiettivo della separazione dei privilegi è prevenire l'escalation dei privilegi contenendo qualsiasi corruzione all'interno dei processi non privilegiati. L'argomento deve essere "yes", "no" 'o "sandbox". Se UsePrivilegeSeparation è impostato su "sandbox", il processo non privilegiato di pre-autenticazione è soggetto a restrizioni aggiuntive. L'impostazione predefinita è "sandbox".
krs013,


24

Le risposte dei sottocomitati di cui sopra sono state eccezionali. Grazie per loro E mentre sono arrivati ​​molto vicini, ho ancora avuto la connessione chiusa da problemi 127.0.0.1 .

Ho trovato e aggiunto ulteriori passaggi da questo post che mi hanno fatto superare la gobba. In particolare, ricominciando da capo e aggiungendo questo come primo / primo passaggio (notare il qualificatore --purge ), ho finalmente risolto la mia variazione di questo problema:

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config # Change Port from 22 to 2222 (Just in case MS-Windows is using port 22; which, by the way, SSH on MS-Windows can be disabled if you want to use port 22).
sudo service ssh --full-restart

Grazie ancora, spero che questa aggiunta aiuti gli altri. = :)


2
Perché il downvote? Queste istruzioni da sole non hanno funzionato nel mio caso, come detto, e il passaggio aggiuntivo sopra ha funzionato. Non capisco
NYCeyes,

1
Stavo riscontrando un errore molto diverso "Nessun metodo di autenticazione supportato disponibile (server inviato: chiave pubblica)" e questi passaggi lo hanno risolto.
Mike Viens,

2
Per qualche motivo, Windows non si è reso conto che stavo correndo sulla porta 2222. Non ha mai mostrato altri processi che lo utilizzano e non ci sono prove di conflitto di porte, ma non appena ho cambiato le porte, ha iniziato a lavoro.
forresthopkinsa,

La porta 2222 non funziona neanche per me, nessun altro servizio è in esecuzione, ma 22 funziona, il che è un problema poiché voglio avere più connessioni SSH.
mFeinstein,

4

Ho fatto tutto come suggerito dal Maestro Azazel e ho avuto il problema. Quando mi sono collegato alla porta 22mi è stata chiesta una password, ma la password che ho impostato nel sottosistema Linux non ha funzionato.

Soluzione n. 1:
modificare la porta SSH /etc/ssh/sshd_confige riavviare il server SSH nel sottosistema

Soluzione n. 2:
disabilitare / arrestare i "Servizi broker di server SSH" nel pannello di controllo dei servizi di Windows e riavviare il server SSH nel sottosistema.


1
Questo vale solo se hai qualcosa in esecuzione su Windows sulla porta 22.
Master Azazel

3
Ofcz, come vedi sulla mia installazione predefinita di win10, c'era un servizio in esecuzione il 22 ...
scotty86,

2

Il motivo per cui non è possibile utilizzare SSH è mostrato nella registrazione dal server:

chroot ("/ var / run / sshd"): funzione non implementata [preauth]

Il sottosistema Linux non sembra aver implementato chroot e il server ssh ne ha bisogno, quindi la connessione non è consentita.


3
Che è corretto .. ma le altre risposte spiegano come aggirare il requisito chroot.
Mahmoud Al-Qudsi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.