Client SSH del sottosistema Linux di Windows 10 Risorsa temporaneamente non disponibile


25

Sto provando a ssh nel mio server remoto all'interno del sottosistema Linux di Windows 10. Sto usando MS Windows 10 Home Insider Preview build 14366.

Mentre al prompt dei comandi, digito:

ssh user@domain.com

Pochi secondi dopo aver digitato il comando ssh, ricevo il seguente messaggio:

ssh: connettersi alla porta host domain.com 22: risorsa temporaneamente non disponibile

Sono riuscito a connettermi con Putty e usando ssh in Git Bash.

Quindi, questo mi porta a credere che il problema sia sul mio pc locale e più specificamente all'interno del sottosistema Linux. Sono ancora molto ecologico con l'ambiente Linux e non sono sicuro di come interpretare questo messaggio. Quale risorsa non è disponibile e cosa devo fare per renderla disponibile?


Prima ipotesi: Windows Firewall? ps> e benvenuto su superutente :) Google sembra un po 'invece correlato con fork. Si prega di modificare il post e aggiungere la riga di comando che ti danno questo errore.
Hastur,


sto solo controllando che stai usando una build Insider Preview di Windows 10 perché AFAIK il sottosistema Linux è disponibile solo in questa versione, non su Windows 'normale' 10. Altrimenti potresti usare Cygwin?
gogoud,

@ggoud - Ho aggiornato la domanda per includere il sistema operativo. È davvero la build di Insider Preview.
Kell,

2
Ho anche questo problema. Colpisce tutti i programmi supportati da ssh come gitandapt-get
scicalculator il

Risposte:


10

Per quanto ne so, questo è un bug in WSL. Speriamo che Microsoft lo risolva nella prossima build. Ma per ora, possiamo usare questo hack un po 'brutto.

Aggiornamento n. 1 : sicuramente un bug. Trovato questo problema su Github. La loro proposta di soluzione alternativa per il riavvio della shell funziona anche per me se non si desidera eseguire tutto ciò.

TL; DR Aggiungi questo per END la tua configurazione SSH (solitamente situata in ~/.ssh/config):

Host *
    ProxyCommand nc %h %p %r

Ecco perché funziona: problema nostro SSH non è un problema di firewall perché nce telnetlavorare per lo stesso host e la porta (provate telnet <host> <port>o nc <host> <port>: si dovrebbe vedere qualcosa di simile SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7). Questo possiamo usarlo a nostro vantaggio.

SSH consente l'uso di proxy che accettano input standard e lo inviano alla porta del server tramite l' ProxyCommandopzione. Normalmente viene utilizzato per eseguire il tunneling delle reti verso un host protetto utilizzando un server SSH intermedio, a volte chiamato host di salto (vedere questo collegamento per ulteriori informazioni).

Questo hack dice a SSH di usare un proxy senza host di salto. Quindi, aggira l'allocazione non riuscita di SSH delle risorse TCP spingendo tutta l'allocazione delle risorse di rete su Netcat, che funziona. SSH fa semplicemente la sua cosa SSH senza alcuna connessione di rete e Netcat invia i dati grezzi tramite una connessione TCP al server SSH.

ATTENZIONE: poiché questo modifica il ProxyCommandper tutti gli host, non so come interagisce con altri host di configurazione SSH che usano ProxyCommand. Ho alcuni server con cui posso provare questo, e aggiornerò questa risposta con i risultati. È possibile che non vi siano effetti collaterali dannosi, ma non posso garantirlo.

Aggiornamento n. 2: ho eseguito alcuni test con alcuni dei miei server e questo sembra funzionare. SSH utilizza la voce più in alto nella configurazione quando si applicano più voci. Pertanto, un ProxyCommandregalo esistente al di sopra di questo hack lo annullerebbe. Quando viene eseguito il nuovo comando SSH, rilegge la configurazione SSH e, se non ce n'è altro ProxyCommand, SSH utilizza il nostro hack ProxyCommand, consentendogli di applicarsi solo alla sessione SSH "più esterna". Avvertenza: se si posiziona l'hack nella parte superiore del file di configurazione (o sopra la voce a cui si sta tentando di eseguire SSH), le sessioni SSH che richiedono a ProxyCommandignoreranno l'altra ProxyCommande tenteranno invece di risolvere l'indirizzo dell'host e connettersi direttamente con Netcat.


Grazie per il dettaglio @ computergeek125. Sfortunatamente, anche dopo aver impostato la configurazione come suggerito, ricevo ancora lo stesso messaggio ssh: connettiti alla porta host domain.com 22: risorsa temporaneamente non disponibile Quando eseguo nc -v <host> <porta>, per un output dettagliato, ottengo lo stesso errore: risorsa temporaneamente non disponibile. Potrei fare qualcosa di sbagliato, non sono sicuro. Dal momento che non ho alcun problema con SSH usando la shell Git bash, per ora mi limiterò a farlo. A proposito, il mio sistema è ora alla build 14393, quindi, se si trattava di un bug nella versione al momento della domanda, è ancora un bug 27 che verrà creato successivamente.
Kell,

Bene, questo è interessante. Dovrò fare qualche ricerca su quella build. Stavo correndo il 14903 al momento (ora sono fino al 14905). Potrebbe essere qualcosa che hanno risolto nella build che ho.
computergeek125,

Come posso modificare la configurazione SSH? Nel bash per Windows ho provato vi ~/.ssh/configche ha aperto un file vuoto. Ho incollato i tuoi comandi ma quando provo a salvare (esc ->: -> wq) mi dice"~/.ssh/config" E212: Cannot open file for writing
Dan

Ok, è strano. Quale build di Windows stai eseguendo e qual è l'output di ls -al ~/.ssh?
computergeek125,

3

Questo è stato anche un problema per me, si è scoperto che era il mio firewall (Symantec) a bloccare tutto il traffico Internet da bash.

Sembra che sia un problema generale con i fornitori di firewall di terze parti che non riconoscono il processo:

https://github.com/Microsoft/BashOnWindows/issues/809

Quando ho disabilitato il mio firewall ha funzionato bene. Non riesco a trovare una soluzione migliore al momento.



0

Per riferimento futuro, quando si installa Nginx, bloccherà SSH per impostazione predefinita con il messaggio di errore "Risorsa temporaneamente non disponibile" a meno che non si ...

sudo ufw consentire ssh


Windows 10 stesso ha un firewall. Perché l'hai suggerito?
Biswapriyo,

Sto suggerendo che per i futuri utenti con gli stessi problemi perché avevo lo stesso identico problema ed era perché Nginx stava bloccando SSH sul server
andrerpena,
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.