SSH torna al computer locale da una sessione SSH remota


12

Sto cercando di fare qualcosa di piuttosto insolito (per me comunque) con SSH e non riesco a farlo funzionare, spero che tu possa aiutare.

Voglio stabilire una connessione a un server remoto dal mio Mac tramite SSH. Fin qui tutto bene. Ora la parte difficile, con la connessione al server remoto stabilita, voglio quindi avviare una connessione dal server remoto INDIETRO alla macchina locale. Lo so, pazzo. Fondamentalmente ho bisogno di saltare attraverso questi cerchi per poter navigare sul server remoto e quindi inviare le informazioni sui file al mio computer locale in modo che possano essere gestite da un'applicazione sul computer locale. Spero che abbia senso!

Al momento, se eseguo il SSH sul computer locale dopo aver effettuato l'accesso al server remoto, il terminale rimarrà lì a rullare, senza errori anche con -v.

Sto cercando di scoprire dove dovrei chiamare guardando l'output della variabile $ SSH_CLIENT, ma sono su una connessione Internet standard vanilla (nessun indirizzo IP statico) Penso che questo potrebbe essere ciò che sta causando il problema.

Cose che ho stabilito: sono su un Mac (OS X 10.6.4) e ho Accesso remoto abilitato nelle preferenze di sistema / condivisione Se provo e SSH nel mio mac da un altro computer sulla LAN non riesco a collegarmi senza problemi. Se provo a inserire SSH in un altro server (non il mio computer locale) dal mio server remoto, posso collegarmi senza problemi.

Quindi i fatti di cui sopra mi fanno pensare di essere in chiaro per quanto riguarda i firewall ecc. Sulle macchine locali e remote.

Sono sicuro che qui mi mancherà qualcosa di abbastanza ovvio, ma per la mia vita non riesco a capirlo.

Qualsiasi aiuto, link o spinta generale nella giusta direzione sarebbe molto apprezzato!


Puoi navigare sul server remoto con ssh. O cerchi di usare afs? Che ne dici di portforwardings e / o sftp / scp?
Andreas Rehm,

Ciao. Sì, posso collegarmi e sfogliare la struttura di directory del server remoto senza problemi. Non sono sicuro di cosa intendi, scusa. Fondamentalmente il piano è questo: voglio ssh nel mio server Linux remoto dal mio Mac locale, cercare un file e quindi essere in grado di reindirizzare la connessione stabilita (o generare una nuova connessione basata su quella già stabilita) a il computer locale in cui un'app Mac leggerà / modificherà i dati prima di rispedirli al server. Non mi preoccupo particolarmente di come ottengo questo in termini di coinvolgimento di altri protocolli.
i0n,

Risposte:


9

Se quando ti riconnetti al tuo locale ti consente di accedere prima di appendere, allora questa non è la risposta. Se non vai così lontano, probabilmente non tornerai sul tuo Mac (o non vai da nessuna parte o colpisci SSH su un gateway). Prova un tunnel inverso (richiederà GatewayPorts impostato su On in sshd_config sul tuo server, ma credo che questo sia predefinito):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
ciò dovrebbe consentire di connetterti al server normalmente, ma anche aprire un tunnel in modo da poter riconnetterti porta 2000 (qualsiasi porta oltre 1024 dovrebbe funzionare), quindiyou@yourserver$ ssh -p2000 user@localhost

EDIT: nome host cambiato in localhost


2
Devi usare user @ localhost nell'ultimo comando
b0fh

1
Questo è stato utile, mi ha quasi portato dove voglio essere! Posso stabilire la connessione con il tunnel inverso come sopra e poi ssh nel mio Mac locale usando ssh -p 2000 i0n @ localhost. Quindi, come posso raggiungere questo obiettivo senza sapere in anticipo che ho bisogno di questa funzionalità? In altre parole con una connessione ssh esistente e standard. È possibile?
i0n,

Grazie b0fh, stavo andando a letto quando ho scritto che =) i0n - istintivamente voglio dire che non puoi modificare una connessione esistente per farlo, ma PuTTY può farlo quindi deve esserci un modo. È sempre possibile inviare una nuova connessione SSH con un tunnel quando è necessario eseguire il pipeback, ma immagino che ciò avverrà a livello di programmazione, quindi potrebbe non essere un'opzione. Cerca Aspetta - se una lingua può essere pronta su SSH, sarà quella.
James L

2

Il tuo computer locale è accessibile dal server? Puoi ping? Lo sto chiedendo perché ciò che stai facendo dovrebbe funzionare se la tua macchina è accessibile. Il tuo server è su Internet o LAN, stessa sottorete?

Comunque, se hai solo bisogno di modificare un file, perché non usi semplicemente scp per copiare il file sul tuo computer locale? Puoi usare ssh per cercare il file sul server remoto e quando hai il suo percorso, inserisci nel tuo computer locale (in un altro terminale):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Per rimettere il file, scp cambia nuovamente i percorsi.

Obs: non è necessaria la connessione ssh iniziale per usare scp - ne creerà una nuova

Questo sopra è se è necessario accedervi nel terminale. Su Linux (e sicuramente su Mac ma non so come farlo), puoi montare una posizione remota ssh in Networks e usare la connessione mentre usi un disco locale (questo è sftp e la connessione è nel formato: sftp://user@server:/path/to/mounte immagino che questo sia ciò di cui hai bisogno invece di una connessione terminale remota in modo da poter modificare il file direttamente con l'applicazione Mac.


1

Potresti anche dare un'occhiata a sshfs( per questo ti serve MacFuse ). Ciò consente di montare le directory sul computer remoto e accedervi proprio come le normali cartelle sul computer. Inoltre, è ancora possibile accedere sshalla macchina e creare / cercare i file necessari. Trasferirli sarebbe quindi facile come trasferire file locali.

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.