GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Timeout di connessione per il server Ssh?

Sto provando a configurare 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 correttamente alla mia macchina utilizzando la porta 57757, ma non sulla WAN.

Se sono fuori dalla LAN e provo ad accedere alla mia macchina da una porta errata, ricevo immediatamente un messaggio di "connessione rifiutata". Tuttavia, con la porta corretta si blocca e quindi va in timeout.

Cosa posso provare per 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 IP WAN internamente. Sono passato a un server diverso e sono tornato indietro e ha funzionato bene.

Risposta accettata:

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

Il tuo router NAT riceve il traffico in entrata sulla porta 57757 e lo invia a un indirizzo IP e a una porta particolari 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, può:

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

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

  • a meno che tu non abbia modificato le impostazioni del firewall (ad es. ufw , iptables ), nessuna porta viene filtrata, e
  • in ogni caso puoi connetterti alla porta 22 della LAN, quindi è aperta.

Quando inoltri una porta a un inesistente macchina con un router NAT, invia il traffico in entrata su quella porta alla macchina inesistente, vale a dire che lo manda in un buco nero; viene effettivamente eliminato.

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 si scopre che non è stato questo il problema...

...quindi dovrai eseguire un po' di risoluzione dei problemi.

  1. La porta specificata per il lato LAN è corretta? Cioè, supponendo che tu non abbia modificato la configurazione del server SSH, la porta 57757 sul lato WAN è impostata per l'inoltro alla porta 22 sul server OpenSSH? (Puoi 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 procedi con queste istruzioni, cambialo nuovamente o sostituisci "57757" di seguito con il nuovo numero.)

  3. Prova a riavviare il server OpenSSH. Questo può aiutare se c'è un problema 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 tutto ciò che puoi. Se non riesci a riavviare il servizio OpenSSH, almeno puoi riavviare il servizio e (è più probabile che risolva il problema) rimuovere l'interfaccia e ripristinarla.

    Per riavviare il server OpenSSH:

    sudo restart ssh
    

    Per disattivare l'interfaccia di rete, prima scopri su quale interfaccia si trova:

    ifconfig
    

    Tipicamente, per una macchina con una singola scheda Ethernet e/o una singola scheda wireless, l'Ethernet è eth0 e il wireless è wlan0 .

    Se desideri rimuovere e riavviare la connessione Ethernet cablata, esegui:

    sudo ifdown eth0
    

    Quindi esegui:

    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, ti consiglio comunque di provare i modi precedenti, ma puoi anche provare a disconnetterti e riconnetterti in NetworkManager.

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

    Qualcosa di strano sta succedendo qui e niente di tutto questo richiede molto tempo:vale la pena essere scrupolosi prima di intraprendere passaggi più scrupolosi per la risoluzione dei problemi.

  4. Come stai tentando di accedervi dal lato WAN? Se stai utilizzando una macchina sulla LAN per fare ciò (basta collegarsi dalla LAN all'IP WAN del router), questo è supportato solo per alcuni router. Dopotutto, il compito di un router è instradare il traffico tra i lati WAN e LAN, non instradare il traffico da un lato a se stesso. Il supporto per la connessione alle porte inoltrate sull'IP WAN dall'interno della LAN è in realtà l'eccezione piuttosto che la regola, anche se molti router per casa/ufficio hanno questa funzione.

    Quindi, se non stai testando la porta in avanti 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, accesso SSH a una macchina remota a scuola, al lavoro, a casa di un amico o simili.

    • Collega la macchina di prova tra il router e tutto ciò che fornisce il suo Connessione Internet. Se si dispone di un modem via cavo/DSL/ISDN con una porta Ethernet e il router è collegato a questa, è possibile collegare uno switch al modem e collegare il router allo switch. Collegare un computer allo switch. Prima vedi se quella macchina ottiene solo l'accesso a Internet:al giorno d'oggi, molti ISP forniscono due o più indirizzi IP separati. In caso contrario , vai alla pagina di configurazione del tuo router e controlla l'IP WAN e la subnet mask WAN, quindi assegna staticamente un indirizzo IP alla macchina connessa allo switch che si trova all'interno della stessa sottorete.

      Questo metodo presenta alcuni svantaggi. È un dolore! Inoltre, è teoricamente possibile che un ISP configuri la propria rete in modo errato in modo che la macchina di prova collegata allo switch possa accedere a Internet. (A meno che non sia intenzione del tuo ISP consentirti di connetterti con più di un IP WAN e ti capita 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/abbandonato dall'ISP. Ma alcuni ISP hanno pratiche strane, quindi chi lo sa?) Se ciò accade, probabilmente non causerà problemi seri a nessuno (e anche se lo facesse, lo avrai connesso solo per pochi minuti). Tuttavia, potrebbe essere potenzialmente visto come un tentativo di ottenere un accesso aggiuntivo oltre i limiti dell'abbonamento e, cosa più importante, se un altro utente ha lo stesso IP, potrebbe interferire con la loro connessione. Pertanto, se vuoi provare questo metodo , non tentare di accedere a Internet dalla macchina di prova, fermarsi immediatamente se si scopre che la macchina di prova può accedere a Internet e non tentare affatto se è vietato o sconsigliato dal proprio ISP. (E non utilizzarlo se il lato WAN del router è una LAN dell'ufficio, senza prima consultare l'amministratore di rete. Non si tratta di un ISP e non si presume che le risorse siano fornite per impedire l'accesso indesiderato.)

      C'è una variazione su questa tecnica che a volte è più appropriata. Il tuo router probabilmente ottiene le sue informazioni di connessione:indirizzo IP, maschera di sottorete, indirizzo IP del gateway (router) sulla WAN che esso utilizza quando non sa dove inviare qualcosa e informazioni sui server DNS, dal tuo ISP, tramite DHCP, tramite il modem via cavo/DSL/ISDN. Questo è il motivo per cui è necessario collegare il router al modem per fornirgli la configurazione necessaria per rendere significativi i risultati dei test lato WAN. Ma il router in genere ricorderà queste informazioni, purché sia ​​effettivamente connesso a una rete sul lato WAN. Quindi puoi connettere il router, il modem e la macchina di prova, ma poi, rapidamente e prima di fare qualsiasi cosa con la macchina di prova oltre ad assicurarti che lo switch lo veda come connesso , disconnetti 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) è molto complicato e poiché mostrerà una porta accessibile anche se è inaccessibile a causa del blocco del tuo ISP (il che vale anche per la connessione al router IP WAN dal lato LAN)-di solito è meglio utilizzare un servizio di scansione delle porte basato sul Web.

      Esistono molti servizi di scansione delle porte. (Alcuni sfoggiano la frase "controlla il firewall" con l'idea che la maggior parte delle persone stia cercando di bloccare piuttosto che facilitare accesso.) Questo è uno. Se scegli di utilizzarlo, fai clic su Procedi , digita 57757 nella casella di testo e fai clic su Usa sonda porta personalizzata specificata . Ai fini dell'esecuzione di un server, vuoi essere "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 non ci fosse nessuna macchina (o come se la porta fosse inoltrata dove non c'è macchina).

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

    Se vuoi farlo, 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 probabilmente non stanno andando da nessuna parte (o sono bloccati/eliminati lungo il percorso).

  6. Vale la pena verificare se il problema deriva 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 le cose, ma forse da qualche parte (il server, il client) qualcosa presume che il numero di porta sia lo stesso dal punto di vista del server e del client.

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

    Altrimenti, puoi rendere il server OpenSSH effettivamente ascolta sulla porta 57757.

    Per fare ciò, esegui 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 usa 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 22 riga in alto, per dire Port 57757 invece.

    • Potresti aggiungere una porta invece di cambiarla. Tuttavia, ti consiglio di testare con la configurazione più semplice ed efficace.

      Vedi man sshd_config per maggiori dettagli sulla configurazione del server OpenSSH.

    Salva il file, esci dall'editor di testo e riavvia il server SSH con:

    sudo restart ssh
    

    Ora cambia la porta forward sul router in modo che la porta 57757 venga inoltrata alla porta 57757 (non 22) sul server OpenSSH e verifica se è accessibile da Internet.

  7. Se ancora non funziona, controlla se forse il firewall di Ubuntu sta effettivamente bloccando il traffico proveniente dall'esterno della LAN.

    (Questo è improbabile se non l'hai configurato in questo modo da solo, ma se tutte le tue impostazioni sono corrette e nessuno dei passaggi precedenti ha rivelato nulla sul problema, vale la pena controllare.)

    Corri:

    sudo iptables -L
    

    Per impostazione predefinita, 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 a non eseguire un firewall. (In effetti, se il modulo firewall netfilter non fosse compilato nel tuo kernel, il tuo sistema si comporterebbe allo stesso modo delle impostazioni precedenti, sebbene iptables comando, che interroga netfilter le impostazioni, ovviamente non funzionerebbero.)

    Se la tua configurazione non è così, leggi man iptables per capire cosa stanno facendo e/o modificare la tua domanda (o, se sei una persona diversa con un problema simile a leggere questo, pubblica una nuova domanda) per includerli. Tieni presente che, potenzialmente, i tuoi iptables le regole potrebbero rivelare informazioni riservate sulla tua configurazione. In pratica, questo di solito non è il caso, con la possibile eccezione delle regole su host specifici che sono bloccati, o se la tua configurazione è pessima/insicura, in genere l'utilità di queste informazioni per un utente malintenzionato, specialmente per una macchina su una LAN di casa/ufficio dietro un router NAT , è minimo.

Correlati:problema NVidia GeForce GTX970 Ubuntu 16.04?
Ubuntu
  1. Come aumentare il timeout della connessione SSH

  2. Connessione Ssh rifiutata dall'interno della LAN?

  3. Ottieni i privilegi di root per Nautilus su una connessione Sftp?

  4. Modificare il numero di porta del server SSH predefinito

  5. Configura l'autenticazione a più fattori per SSH su Ubuntu 20.04

Server SSH Ubuntu 20.04

Installa il server SSH Ubuntu 22.04

SSLH:condividi una stessa porta per HTTPS e SSH

Come installare il server SSH in Ubuntu 20.04

Server SSH

Come connettersi a Internet tramite un server remoto tramite connessione Ssh?