2
1

Salve a tutti!

Ho un server ssh dietro una rete fornita da ISP Linkem e non ha indirizzo pubblico, bensi un indirizzo privato wan: 10.xxx.xxx.xxx subnet: 255.255.255.255

Ovviamente inutile impostare le porte del router per il port forwarding, essendo la rete "Privata" non posso entrare.

Ho trovato delle guide vecchiotte e confusionali che mi hanno portato solo ad avere problemi di connessione su questo server, che ho dovuto ripristinare e quindi ho deciso di chiedere aiuto qui.

Il server ssh gira su un Ubuntu desk 14.04 LTS ed e' configurato per funzionare solo con le chiavi. Il server funziona benissimo nella rete lan ovviamente.

La domanda e': Come posso riuscire ad "entrare" in ssh dall' esterno essendo "chiuso" in una rete nattata?

Inutile chiedere all' ISP di fornire indirizzo pubblico dinamico o meno, purtroppo.

Il mio interesse sarebbe solo di poter usare il protocollo ssh per gestire da remoto.

Spero io sia stato chiaro, grazie a tutti quelli che si interesseranno a questo problema non essendo io in grado su questo argomento di "cavarmela" da solo.

Se avessi dimenticato qualcosa chiedete pure.

Juan

EDIT:

Dalla risposta fornitami da @enzotib ho capito alcuni aspetti importanti che voglio aggiungere qui:

La necessita' di connettermi in ssh al server, mi comporta un unica via: Da "Client a Server", ho necessita' di connettermi al server da qualsiasi postazione, bar, internet point etc... Quindi non posso sapere se le porte saranno aperte da dove mi connetto e quindi non posso fare un reverse.

Per questo la mia necessita', e non per mia scelta, e' a senso unico: Client ==> Server

Inoltre sembra che dalla mia rete io non possa neanche "uscire" in ssh ;(

Rimane invariata la domanda su come posso connettermi ad un server dietro una rete nattata tramite ssh?

chiesto 14 Aug '14, 20:18

Juan's gravatar image

Juan
1.5k4632

modificato 16 Aug '14, 15:24

@Juan: un server ssh esterno alla LAN a tua disposizione ce l'hai?

(14 Aug '14, 20:30) enzotib ♦♦ enzotib's gravatar image

@enzotib posso metterlo nella macchina che uso come client senz' altro!! Non e' un problema!!

(14 Aug '14, 20:40) Juan Juan's gravatar image

Esiste una opzione di ssh, l'opzione -R, che serve a fare il reverse port forwarding, che chiamerà in seguito RPF per semplicità.

Macchina A

  • è la macchina dietro il NAT,
  • ha indirizzo 10.0.0.1
  • ha un utente pippo


Macchina B

  • è il server ssh esterno,
  • ha indirizzo 74.125.232.151 (ho preso uno degli indirizzi di google.it come esempio).
  • ha un utente pluto


Allora bisogna prima stabilire l'RPF, con il comando:

# siamo sulla macchina A
ssh -nNT -R 5000:127.0.0.1:22 pluto@74.125.232.151 &

può essere utile prendere nota del PID del processo, per quando vorremo interrompere l'RPF. Il terminale usato si può chiudere.
Con il precedente comando stabiliamo una connessione permanente tra A e B, con la quale chiediamo che ogniqualvolta un utente si connette a B sulla porta 5000, automaticamente viene rediretto alla macchina A sulla porta 22 (che è la porta standard che usa SSH).

# siamo ora sulla macchina B
ssh -p 5000 pippo@localhost

con questo comando dovremmo ottenere lo stesso risultato che avremmo avuto se ci fossimo potuti collegare direttamente alla macchina A

# siamo ora su un'altra macchina C dalla quale è possibile collegarsi a B
ssh -p 5000 pippo@74.125.232.151

dovremmo ottenere lo stesso risultato di prima.

Naturalmente il numero 5000 usato come porta di appoggio sul server B può essere sostituita a piacere, purché coerentemente in tutti i comandi interessati.

coll. permanente

ha risposto 14 Aug '14, 21:19

enzotib's gravatar image

enzotib ♦♦
14.0k113186

modificato 14 Aug '14, 21:20

@enzotib Nella macchina A devo aprire la porta 22 del router?

(14 Aug '14, 21:34) Juan Juan's gravatar image

@Juan, no, non serve, dato che l'unica connessione utilizzata è quella in uscita, sulla quale viene incanalato il traffico in ingresso.

(14 Aug '14, 21:35) enzotib ♦♦ enzotib's gravatar image

@enzotib La macchina B dopo il comando: ssh -p 5000 pippo@localhost mi risponde: ssh: connect to host localhost port 5000: connection refused

EDIT Nella macchina A il seguente messaggio: ssh: connect to host xx.xx.xx.xx port 22: Connection timed out

(14 Aug '14, 21:39) Juan Juan's gravatar image

@Juan: riesci a connetterti da A a B nel modo usuale, senza l'opzione -R e senza -nNT, e senza il & finale?

(14 Aug '14, 21:53) enzotib ♦♦ enzotib's gravatar image

@enzotib un paio di domande, se cambio porta 22 ovviamente funziona lo stesso, usando la stessa dinamica? Altro intoppino, se non posso controllare il server, cadesse la connessione non potro utilizzarlo?! Ma sopratutto, devo conoscere in anticipo l' indirizzo dell client, se fossi in viaggio mi connetterei da bar etc... alternative? (Grazie comunque di tutto!!)

(14 Aug '14, 21:56) Juan Juan's gravatar image

@enzotib leggo roa, scrivevamo insieme, la risposta e' no: Connection timed out usando il semplice: ssh $USER@Indirizzo-ip visto che il test lo sto facendo dalla 22 non indico la porta d uso che se risolvo cambiero' ovviamente ;)

(14 Aug '14, 21:59) Juan Juan's gravatar image

@Juan stiamo di fatto usando due server ssh, uno su A e uno su B, per cui a seconda di quale server cambia da 22 ad altro, allora si vede cosa bisogna cambiare.
Per quanto riguarda la caduta del server B, ovviamente non puoi fare niente se non puoi controllarlo.
L'indirizzo del client A non mi pare che sia mai stato utilizzato in nessun comando, quindi non devi conoscerlo in anticipo, anzi non ti serve proprio di conoscerlo.

(14 Aug '14, 22:00) enzotib ♦♦ enzotib's gravatar image

@enzotib come non devo conoscerlo? Dal server(A) che ho chiamato client x via della dinamica bisogna impostare la connessione a quello che poi sara davvero il client(B)... Su (A): ssh -nNT -R 5000:127.0.0.1:22 pluto@74.125.232.151 & in questo modo non so in anticipo a cosa connettermi...

(14 Aug '14, 22:05) Juan Juan's gravatar image

@Juan avevo capito pensavi di dover usare l'indirizzo di A. L'indirizzo di B ovviamente serve, ma un indirizzo per connetterti dovrai pure conoscerlo, no? Mica si possono fare i miracoli?
Per questo ti chiedevo se avessi un server ssh a disposizione, se poi questo server cambia indirizzo, questo è un altro problema, potresti usare qualche servizio di dynamic dns.

(14 Aug '14, 22:09) enzotib ♦♦ enzotib's gravatar image

@enzotib ok diciamo che posso utilizzare un dyndns per risolvere la cosa, ma comunque anche cosi per ora non funziona la cosa... Non stabilisco connessione da A a B anche direttamente con ssh pluto@74.125.232.151

(14 Aug '14, 22:12) Juan Juan's gravatar image

@Juan: questo è un problema che è indipendente dalla procedura che ti ho mostrato, la connettività di base da A a B è un prerequisito.
Il server B ascolta sulla porta 22? Hai messo l'utente giusto e l'indirizzo giusto?

(14 Aug '14, 22:17) enzotib ♦♦ enzotib's gravatar image

@enzotib, si ed ho chiesto ad un amico di connettersi a (B) da casa sua con una rete adsl normale, nessun problema al server del client B (Purtroppo :))

EDIT Si vede che questi della Linkem hanno chiuso tutto anche in uscita e' possibile?

(14 Aug '14, 22:22) Juan Juan's gravatar image

@Juan, metti il server B sulla 80, questa non la possono chiudere.

(14 Aug '14, 22:24) enzotib ♦♦ enzotib's gravatar image

@enzotib ho dato il comando che poi ho killato e nulla, rimane tutto come prima, ho provato ad uscire dalla 80 sulla A e connettermi nella B che ho impostato a porta 80 ma nulla da fare, non esco da qui dentro non so perche'... Ho fatto un test delle porte al server nattato da qui e la 80 comprese tutte le altre risultano stealth. Dopo ferragosto chiedero' lumi all ISP anche se dubito sappiano di cosa si parla, domani comunque ritentero', ora la mia donna mi uccide se non andiamo, se intanto hai un idea fammi sapere. Grazie davvero di tutto fin ora cmq!

(14 Aug '14, 22:40) Juan Juan's gravatar image

@enzotib ho fatto tutti i test possibili ma purtroppo non esco e non entro da questa maldita rete. Ci si riesce solo a naviare. Non so come fanno ma evidente che hanno dei filtri potenti cosi da impedire il traffico da tutti i protocolli tranne www. Se qualcuno avesse un idea o avesse risolto in qualche modo scriva pure, sara' molto Gradito!! Juan

(15 Aug '14, 18:16) Juan Juan's gravatar image

AGGiunGo che il tuo sistema funziona in se, ma anche cosi non si riesce a scavalcare nulla...

(15 Aug '14, 18:17) Juan Juan's gravatar image

@Juan: io invece aggiungo che la mia soluzione prevede che il primo comando sia fatto da casa, in un momento in cui B è in ricezione e una volta stabilito il canale non puoi più muovere B, quindi è sostanzialmente incompatibile con un B itinerante.
Però aggiungo ancora che se uno riesce a trovare un B fisso, poi può andare in giro con, diciamo, una macchina C e da questa connettersi a B come se si stesse connettendo ad A.

(16 Aug '14, 16:11) enzotib ♦♦ enzotib's gravatar image

Si ma mi e' impossibile, anche perche se avessi questa opportunita' avrei il server direttamente dove sarebbe B :) La risoluzione sta solo nell entrare in questa rete dove ho il server e dove B e' per forza di cose itinerante... Ho anche impostato dyndns e posso usare autossh, ma non e' questo il problema. Uno dei problemi e' che non entro in sshse sono in un bar che ha la porta 22 chiusa e firewallata per esempio.

(16 Aug '14, 16:34) Juan Juan's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×445
×130
×67
×17
×2

domanda posta: 14 Aug '14, 20:18

domanda visualizzata: 4,213 volte

ultimo aggiornamento: 16 Aug '14, 16:34

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.