Timeout della connessione per il server SSH


11

Sto cercando di installare openssh-server, ma sto riscontrando alcuni problemi di connessione. Ho cambiato la porta in qualcosa di non standard (57757) e quindi ho impostato il mio router per l'inoltro a quella porta. Sulla mia LAN, sono in grado di accedere alla mia macchina senza problemi usando la porta 57757, ma non riesco a farlo sulla WAN.

Se sono fuori dalla LAN e provo ad accedere al mio computer da una porta errata, ricevo immediatamente un messaggio "connessione rifiutata". Tuttavia, con la porta corretta si blocca e quindi scade.

Cosa posso provare a eseguire il debug del problema? Ho provato un traceroute, ma non mi ha detto nulla di utile.

EDIT: mi sono reso conto che il mio problema era che il mio router non supportava l'accesso tramite WAN IP internamente. Sono andato su un altro server e sono rientrato e ha funzionato bene.


Hai cambiato qualcosa accanto alla porta su cui è in ascolto?
Guntbert,

@guntbert Nope. Potrebbe essere un problema con il loopback?
Ci3,

loopback? hai provato solo dalla macchina stessa? hai un altro dispositivo all'interno della tua LAN da testare?
Guntbert,

@guntbert L'ho provato con un'altra macchina e non ci sono problemi all'interno della LAN.
Ci3,

La mia idea di "ultima risorsa": sudo apt-get purge openssh-serverquindi reinstallarla (in modo da sbarazzarci di tutto ciò che potrebbe essere successo alla configurazione) e riconfigurare il router per inoltrare 22-> 22.
Guntbert,

Risposte:


11

Di solito questo significa che hai inoltrato la porta all'indirizzo IP errato sulla LAN.

Il router NAT riceve il traffico in entrata sulla porta 57757 e lo invia a un determinato indirizzo IP e porta sulla LAN.

Per impostazione predefinita, Ubuntu non filtra i tentativi di connessione in entrata con un firewall. Quindi, a meno che tu non abbia modificato le impostazioni del firewall in Ubuntu, un tentativo di aprire una connessione a qualsiasi porta TCP, da 1 a 65535:

  • accetta la connessione, se la porta è aperta
  • rifiutare il tentativo di connessione, se la porta è chiusa

Se le porte fossero filtrate da un firewall, otterrai ciò che stai vedendo, nessuna risposta a un tentativo di connessione. Ma:

  • a meno che non hai cambiato le impostazioni del firewall (ad esempio, ufw, iptables), nessuna porta è filtrata, e
  • in ogni caso, puoi collegarti alla porta 22 sulla LAN, quindi è aperta.

Quando si inoltra una porta a una macchina inesistente con un router NAT, invia il traffico in entrata su quella porta alla macchina inesistente, vale a dire che la invia in un buco nero ; è effettivamente lasciato cadere.

Ciò causa esattamente la situazione che hai descritto. Quindi molto probabilmente puoi risolvere questo problema assicurandoti che la porta venga inoltrata all'indirizzo IP corretto sulla LAN.

Se questo risulta non essere stato il problema ...

... allora dovrai fare un po 'di risoluzione dei problemi.

  1. La porta specificata per il lato LAN è corretta? Cioè, supponendo che non sia stata modificata la configurazione del server SSH, la porta 57757 sul lato WAN è impostata per inoltrare alla porta 22 sul server OpenSSH? (Potresti voler ricontrollare questo.)

  2. Forse c'è qualche problema con la porta specifica che hai scelto (57757). Provane uno diverso e vedi se funziona meglio.

    (In caso contrario, e si procede con queste istruzioni, cambiarlo nuovamente o sostituire "57757" di seguito con il nuovo numero.)

  3. Prova a riavviare il server OpenSSH. Ciò può essere utile in caso di problemi di rete. Se ciò non aiuta, prova a riavviare anche il router e il modem via cavo / DSL / ISDN.

    Se per qualche motivo non riesci a riavviare tutti e tre i dispositivi, ti consiglio di riavviare il più possibile. Se non è possibile riavviare il servizio OpenSSH, almeno è possibile riavviare il servizio e (più probabilmente per risolvere questo problema) disattivare l'interfaccia e ripristinarla.

    Per riavviare il server OpenSSH:

    sudo restart ssh
    

    Per disattivare l'interfaccia di rete, innanzitutto capire quale interfaccia è attiva:

    ifconfig
    

    In genere, per una macchina con una singola scheda Ethernet e / o una singola scheda wireless, Ethernet è eth0e wireless è wlan0.

    Se la connessione Ethernet cablata è ciò che si desidera rimuovere e riavviare, eseguire:

    sudo ifdown eth0
    

    Quindi eseguire:

    sudo ifup eth0
    

    In alternativa, puoi eseguire:

    sudo ifconfig eth0 down
    

    Seguito da:

    sudo ifconfig eth0 up
    

    Se la macchina utilizza NetworkManager per gestire l'interfaccia su cui è in esecuzione il server OpenSSH, consiglio comunque di provare i modi sopra indicati, ma puoi anche provare a disconnetterti e riconnetterti in NetworkManager.

    Per una connessione Ethernet, provare anche a scollegare il cavo e ricollegarlo. Per una connessione wireless, provare a spegnerlo con l'interruttore hardware (se presente) e riaccenderlo.

    Qualcosa di strano sta succedendo qui e niente di tutto ciò richiede molto tempo - vale la pena essere accurati prima di intraprendere ulteriori scrupolosi passaggi per la risoluzione dei problemi.

  4. Come stai tentando di accedervi dal lato WAN? Se stai utilizzando una macchina sulla LAN per farlo ( ti stai semplicemente connettendo dalla LAN all'IP WAN del tuo router), questo è supportato solo per alcuni router. Dopotutto, il compito di un router è instradare il traffico tra i lati WAN e LAN, non indirizzare il traffico da un lato a se stesso. Il supporto per la connessione a porte inoltrate sull'IP WAN dall'interno della LAN è in realtà l'eccezione piuttosto che la regola, sebbene molti router domestici / d'ufficio abbiano questa funzionalità.

    Quindi, se non stai testando il port forwarding da un host sul lato WAN, dovresti farlo. Le tue opzioni per questo sono:

    • Connettiti dal lato WAN. Funziona se hai accesso a una macchina lì, ad esempio l'accesso SSH a una macchina remota a scuola, al lavoro, a casa di un amico o simile.

    • Connetti la macchina di prova tra il router e qualunque cosa fornisca la sua connessione Internet. Se si dispone di un modem via cavo / DSL / ISDN con una porta Ethernet e il router è collegato, è possibile collegare uno switch al modem e collegare il router allo switch. Collegare un computer allo switch. Per prima cosa vedi se quella macchina ottiene l'accesso a Internet: oggigiorno molti ISP forniscono due o più indirizzi IP separati. In caso contrario , vai alla pagina di configurazione del router e controlla la sua subnet IP e WAN , quindi assegna staticamente un indirizzo IP alla macchina connessa allo switch che si trova nella stessa sottorete.

      Questo metodo presenta alcuni svantaggi. È un dolore! Inoltre, è teoricamente possibile per un ISP configurare la propria rete in modo errato in modo che la macchina di prova connessa allo switch possa accedere a Internet. (A meno che non sia intenzione del tuo ISP consentirti di connetterti con più di un IP WAN eti è capitato di aver scelto un IP WAN per la macchina di prova che il tuo ISP ti ha assegnato, il traffico tra esso e un vero host WAN dovrebbe essere bloccato / eliminato dall'ISP. Ma alcuni ISP hanno pratiche strane, quindi chi lo sa?) Se ciò accade, probabilmente non causerà a nessuno seri problemi (e anche se lo facesse, lo hai collegato solo per alcuni minuti). Tuttavia, potrebbe potenzialmente essere visto come un tentativo di ottenere un accesso aggiuntivo oltre i limiti dell'abbonamento e, cosa ancora più importante, se un altro utente ha lo stesso IP, potrebbe interferire con la propria connessione. Pertanto, se si desidera provare questo metodo, non provare ad accedere a Internet dalla macchina di prova, fermati immediatamente se trovi che la macchina di prova può accedere a Internet e non tentare affatto se è proibito o sconsigliato dal tuo ISP. (E non utilizzarlo se il lato WAN del router è una LAN per ufficio, senza prima consultare l'amministratore di rete. Non si tratta di un ISP e non si presume che vengano fornite risorse per impedire l'accesso indesiderato.)

      C'è una variazione su questa tecnica che a volte è più appropriata. Il router probabilmente ottiene le informazioni di connessione - indirizzo IP, la subnet mask, l'indirizzo IP del gateway (router) sulla WAN che si utilizza quando non sa dove mandare qualcosa, e informazioni sui server DNS - dal ISP, tramite DHCP, tramite modem via cavo / DSL / ISDN. Questo è il motivo per cui è necessario che il router sia collegato al modem per fornire la configurazione necessaria per rendere significativi i risultati del test lato WAN. Ma il router in genere ricorderà queste informazioni, a condizione che siano effettivamente connesse a una rete sul lato WAN. Quindi puoi connettere il router, il modem e la macchina di prova, ma poi, rapidamente eprima di fare qualsiasi cosa con la macchina di prova oltre a verificare che l'interruttore lo veda come collegato , scollegare il modem.

    • Utilizza un servizio gratuito su Internet per testare le tue porte. Poiché l'inserimento di una macchina di prova tra l'interfaccia WAN del router e Internet (sopra) è fortemente coinvolto, e poiché mostrerà una porta come accessibile anche se inaccessibile a causa del blocco dell'ISP (che è anche vero per la connessione al IP WAN del router dal lato LAN) - di solito è meglio utilizzare un servizio di scansione delle porte basato sul Web.

      Esistono molti servizi di scansione delle porte. (Alcuni mostrano la frase "controlla il tuo firewall" con l'idea che la maggior parte delle persone sta cercando di bloccare piuttosto che facilitare l' accesso.) Questa è una. Se si sceglie di utilizzarlo, fare clic su Procedi , digitare 57757 nella casella di testo e fare clic su Usa sonda porta personalizzata specificata . Ai fini dell'esecuzione di un server, si desidera che sia "aperto". "Chiuso" significa che la porta è accessibile ma il server non è in esecuzione (e quindi il tentativo di connessione è stato rifiutato). "Stealth" significa che la porta era inaccessibile - è come se nessuna macchina fosse localizzata lì (o come se la porta fosse inoltrata dove non c'è nessuna macchina).

  5. OK, quindi hai determinato che non è davvero accessibile da Internet. Potenzialmente puoi scansionarlo (idealmente dal lato WAN) per ottenere dettagli, sebbene spesso questo non fornisca informazioni utili.

    Se vuoi farlo, quindi sul lato WAN, puoi eseguire:

    sudo nmap -sS -sV -p57757 -vv WAN-IP

    Se la porta viene mostrata come filtrata, ciò conferma che i pacchetti inviati lì probabilmente non vanno da nessuna parte (o vengono bloccati / rilasciati lungo la strada).

  6. Vale la pena verificare se il problema sorge dal fatto che la porta esposta alla WAN è diversa dalla porta su cui il server è effettivamente in ascolto. L'inoltro della porta 55757 sulla WAN alla porta 22 sulla macchina LAN dovrebbe far funzionare bene le cose, ma forse da qualche parte (il server, il client) qualcosa sta assumendo che il numero di porta sia lo stesso dal punto di vista del server e del client.

    Presumibilmente non è possibile inoltrare la porta 22 attraverso il router. Forse il tuo ISP blocca quella porta. Ma se riesci a farlo, fallo!

    Altrimenti, è possibile rendere il server OpenSSH effettivamente in ascolto sulla porta 57757.

    Per fare ciò, eseguire il backup del file di configurazione del server:

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    Quindi modificalo:

    gksu gedit sshd_config
    

    Oppure utilizza un editor di testo della console se la macchina non ha una GUI:

    sudo nano -w sshd_config
    

    Nella parte superiore del file viene visualizzato questo blocco di testo:

    # 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
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    

    Basta cambiare la Port 22linea in alto, per dire Port 57757invece.

    • È possibile aggiungere una porta anziché modificarla. Consiglio comunque di provare con la configurazione efficace più semplice.

      Vedere man sshd_configper maggiori dettagli sulla configurazione del server OpenSSH.

    Salvare il file, chiudere l'editor di testo e riavviare il server SSH con:

    sudo restart ssh
    

    Ora cambia la porta in avanti sul router in modo che la porta 57757 inoltri alla porta 57757 (non 22) sul server OpenSSH e vedi se è accessibile da Internet.

  7. Se il problema persiste, verifica se il firewall di Ubuntu sta effettivamente bloccando il traffico proveniente dall'esterno della LAN.

    (Questo è improbabile se non lo hai configurato tu stesso, ma se tutte le tue impostazioni sono corrette e nessuno dei passaggi precedenti ha rivelato qualcosa sul problema, vale la pena controllarlo.)

    Correre:

    sudo iptables -L
    

    Di default, in Ubuntu, l'output è simile a:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Questa è una semplice politica permissiva, essenzialmente equivalente alla non esecuzione di un firewall. (In effetti, se il modulo firewall netfilter non fosse compilato nel kernel, il sistema si comporterebbe allo stesso modo delle impostazioni precedenti, sebbene il iptablescomando, che richiede netfilterle impostazioni delle query , non funzionerebbe ovviamente.)

    Se la tua configurazione non ha questo aspetto, leggi man iptablesper capire cosa stanno facendo e / o modifica la tua domanda (o, se sei una persona diversa con un problema simile a leggere questo, pubblica una nuova domanda) per includere loro. Tieni presente che, potenzialmente, le tue iptablesregole potrebbero rivelare informazioni riservate sulla tua configurazione. In pratica, questo non è generalmente il caso - con la possibile eccezione delle regole su host specifici che sono bloccati, o se la configurazione è molto scadente / insicura - in genere l'utilità di queste informazioni per un attaccante, specialmente per un computer acceso una LAN di casa / ufficio dietro un router NAT è minima.


1

Poiché funziona dall'interno della LAN, la configurazione del server sembra essere corretta. È necessario indicare al router di inoltrare dalla porta che si desidera utilizzare all'esterno alla porta 57757 sulla macchina .
A traceroutenon sarà di alcuna utilità in questo caso.


Ok, ho pensato che il lato della macchina fosse a posto. Sì, ho impostato il mio router per inoltrare 57757 a 22 ... ma ho lo stesso problema. sshd_config è impostato anche sulla porta 22.
Ci3,

Probabilmente dovrebbe essere: "la porta che vuoi usare all'esterno (es. 57757 ) alla porta 22 sulla tua macchina ". È l' indirizzo del porto pubblico per il quale è necessario oscurare.
david6,

In questo caso non è corretto - se ho capito la domanda di Chris
Guntbert, il
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.