Tunnel SSH per desktop remoto tramite Intermediary Server parte II


10

In precedenza avevo chiesto come configurare 2 tunnel SSH utilizzando un server intermedio per eseguire Remote Desktop attraverso di essi e sono riuscito a farlo funzionare. Ora sto provando a fare lo stesso, usando le stesse macchine, ma in ordine inverso. Ecco la configurazione:

  1. PC Windows 7 in una rete privata, seduto dietro un firewall.
  2. Server Linux ad accesso pubblico, che ha accesso al PC.
  3. Laptop Windows 7, a casa, su cui desidero fare Desktop remoto dal PC.

Io uso Putty sul portatile per creare un tunnel inverso rispetto al server Linux: R60666 localhost:3389.

Io uso Putty sul PC per creare un tunnel regolare da esso per il server Linux: L60666 localhost:60666.

I SSH al server Linux ed eseguo telnet localhost 60666 e sembra produrre l'output previsto, come descritto nei suggerimenti per il debug che ho ricevuto qui .

Provo a collegarlo tavolo a distanza dal PC al portatile: localhost:60666. Richiede il mio nome utente e password, faccio clic su OK e blocca la mia sessione corrente sul laptop (quindi vedo la schermata di benvenuto sul laptop anziché sul mio desktop), mostra il messaggio "Benvenuto" nella schermata Desktop remoto e quindi diventa solo nero. Non si disconnette, non fornisce alcun errore e non sono in grado di eseguire alcuna azione nella schermata Desktop remoto. Ho provato la stessa configurazione con un laptop Windows XP e sto riscontrando gli stessi sintomi. Ho anche provato a utilizzare porte diverse da 60666, ma non è cambiato nulla. Qualcuno ha idea di cosa sto facendo di sbagliato?


Aggiornamento : come sottolineato da @jwinders, non sono in grado di eseguire direttamente telnet PC 3389dal server Linux. Poiché Windows Firewall ha una regola per consentire tutte le connessioni sulla porta 3389, non ho idea di cosa lo stia bloccando. Fortunatamente, sono in grado di creare un tunnel SSH dalla macchina Linux al PC ssh 3389:localhost:3389 'domain\user'@PC.


A quel punto userei seriamente GoToMyPC .
ewwhite,

1
@ewwhite Non vedo alcun motivo per cui non dovrei essere in grado di utilizzare l'installazione che ho descritto. Anche se esistono soluzioni più semplici (che richiedono il coinvolgimento di un'altra terza parte), considero questa una sfida interessante.
Mihai Todor,

1
Questo è un post molto valido, ma il problema esiste ancora ed è abbastanza frustrante che tutte le risposte sembrino mancare il punto. La connessione può essere avviata, ma si interrompe un secondo dopo l'avvio. Il commento che "accedi tramite rdp, interromperà quella connessione" sembra coerente con ciò che viene osservato ma non risponde al perché né suggerisce una soluzione.
Shermans,

Risposte:


3

Oggi mi sono imbattuto nello stesso schermo nero + problema di disconnessione, usando putty come client. Alla fine ho trovato una soluzione .

Sono passato da putty a bitvise tunnelier e ho impostato una S2Cconnessione con le seguenti impostazioni:

listen if:0.0.0.0
listen port:13389
destination host:localhost
dest port:3389

Come per caso, sto usando il server bitvise ssh sul mio server, quindi questa potrebbe essere solo una felice combinazione per due prodotti realizzati dallo stesso fornitore. Sarebbe bello se questo risolvesse i problemi per gli altri.

Per la cronaca, non sono affiliato con questi ragazzi in alcun modo.


2

Non vedo nulla di sbagliato nei tuoi tunnel SSH. Connessione a localhost: 60666 sul PC dovrebbe finire su localhost: 3389 sul laptop. E il fatto che stai ricevendo una schermata di accesso conferma questa valutazione.

Un po 'di google sullo schermo vuoto mi porta a questo articolo della Microsoft Knowledge Base: http://support.microsoft.com/kb/555840 . Indica che una schermata vuota potrebbe essere dovuta a possibili disallineamenti della dimensione MTU:

Verità che il server, il client e l'apparecchiatura di rete utilizzino la dimensione "MTU".

Date le tue discrete quantità di hop di rete, firewall e cosa hai, la frammentazione dei pacchetti è abbastanza probabile :) La maggior parte dei computer Windows utilizza un MTU di 1300 per impostazione predefinita, mentre la maggior parte dei box Linux ha 1500 (il valore massimo consentito per LAN, senza considerare i frame jumbo ). Puoi provare ad abbassarli per ridurre la frammentazione.

Guarda anche:


1
Grazie per la punta, ma, sfortunatamente, non fa il trucco. L'MTU sia sul mio laptop che sul PC è impostato su 1500 ( netsh interface ipv4 show subinterfaces) e ping linux_server -f -l 1472riesce da entrambe le macchine. Proprio come un test, ho provato a impostare l'MTU sul PC a 1300, ma non ha aiutato. Ho anche provato a cambiarlo anche sul laptop, ma inutilmente :( Mi chiedo se esiste un modo "più intelligente" per eseguire il debug di questo problema ...
Mihai Todor,

1

Una VPN non sarebbe più appropriata? OpenVPN è semplicissimo da configurare. Ecco una configurazione di esempio e alcuni collegamenti per guidare l'utente attraverso il processo di creazione del certificato.

Basta configurare l'intermediario in modo che sia l'host, e gli ospiti possono collegarsi e comunque comunicare tra loro.

apt-get install openvpn
mkdir /etc/openvpn/easy-rsa
mkdir -p /etc/openvpn/ccd/client_server
touch /etc/openvpn/ipp.txt
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca 
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile ca.crt

Quindi creare un nuovo file /etc/openvpn/client_server.confe inserire quanto segue, modificando il modo SERVER_IP_ADDRESSappropriato

local SERVER_IP_ADDRESS
port 8443
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp.txt
server 192.168.100.0 255.255.255.0
client-config-dir /etc/openvpn/ccd/client_server
ccd-exclusive
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
reneg-sec 0
client-to-client

Quindi creare una chiave per utente che si connetterà e creare il file di configurazione nella directory ccd

./build-key-pkcs12 user1@domain.com
echo "ifconfig-push 192.168.100.2 255.255.255.0" > /etc/openvpn/ccd/client_server/user1@domain.com

L'indirizzo IP DEVE essere adatto per una sottorete / 30 (consultare http://www.subnet-calculator.com/cidr.php ), poiché sono disponibili solo 2 indirizzi (server e client) per connessione. Quindi il tuo prossimo IP client disponibile sarebbe 192.168.100.6 e così via.

Quindi ora hai IP statici per utente connesso.

Quindi fornire il the user1@domain.com.p12file all'utente finale e utilizzare il seguente file di configurazione

client
dev tun
proto udp
remote SERVER_IP_ADDRESS 8443
pkcs12 user1@domain.com.p12
resolv-retry infinite
nobind
ns-cert-type server
comp-lzo
verb 3
reneg-sec 0

1
Bene, sì, questo potrebbe funzionare, ma non ho l'accesso richiesto sulla scatola di Linux per installare roba :( Tuttavia, trovo il tutto estremamente frustrante, perché funziona in una direzione e fallisce in quella opposta.
Mihai Todor,

1

Se si esegue la sessione ssh all'interno dell'account utente (utilizzando un programma come putty.exe), quando si tenta di accedere tramite rdp, interromperà tale connessione causando l'interruzione della sessione rdp. Quello che devi fare è eseguire il tunnel ssh come servizio che non verrà interrotto.


1
Interessante. Non ho più accesso a quella configurazione, quindi non sarò in grado di testare la tua teoria, ma sarebbe bello avere qualche dettaglio in più su questo per altre persone che stanno affrontando lo stesso problema. Hai qualche riferimento per i tuoi reclami? Cosa intendi con la connessione interrotta da Putty?
Mihai Todor,

0

penso che tu possa fare tutte le conf dal tuo laptop

imposta una connessione putty alla scatola linux sul tuo laptop. quindi in 'connessione'> 'SSH'> 'tunnel' inserisci 60666 nel campo 'porta sorgente' e assicurati che il pulsante di opzione Locale sia selezionato. nella 'destinazione' inserisci win7-box-name-or-ip: 3389.

salva tutto ciò e dovrebbe permetterti di aprire una sessione putty su linux-box che crea automaticamente un tunnel di inoltro del traffico verso localhost (il tuo laptop): da 60666 a win7: 3389

se lo stai facendo dalla riga di comando dovrebbe essere qualcosa del genere

ssh -L60666:win7:3389 linux-box

1
Quindi, vediamo ... Questa configurazione dovrebbe inoltrare la porta 3389 dal PC alla porta 60666 sul laptop. Non vedo come funzionerà, comunque, e, in ogni caso, non mi permetterà di fare desktop remoto sul portatile ... Per quanto non posso dire, deve essere fatto usando 2 gallerie.
Mihai Todor,

con questo conf, non puoi rdp su localhost: 60666 sul tuo laptop?
jwinders,

No, non funziona
Mihai Todor,

1
Non funziona L'unico modo in cui sono in grado di farlo è quello di stabilire prima un tunnel dalla scatola Linux al PC ssh 3389:localhost:3389 'domain\user'@PCe poi farlo telnet localhost 3389sulla scatola Linux.
Mihai Todor,

1
Questo è un punto interessante, ma non sono sicuro di capire cosa lo sta bloccando. Windows Firewall ha una regola che consente esplicitamente tutte le connessioni sulla porta 3389 dal dominio.
Mihai Todor,

0

Ho scoperto che, a meno che tutti gli utenti non fossero stati completamente disconnessi dalla macchina, dopo aver inserito le credenziali avrei ottenuto una schermata vuota. Quindi, assicurati di disconnetterti sempre.


2
Bel tentativo, ma ancora nessuna fortuna :(
Mihai Todor
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.