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.
-
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.)
-
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.)
-
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.
-
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).
-
-
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).
-
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 direPort 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.
-
-
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 interroganetfilter
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 tuoiiptables
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.