Soluzione 1:
Sicuro; basta usare il port forwarding/tunneling SSH. Avvia una connessione ssh alla macchina "proxy" utilizzando il seguente comando:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
:la macchina a cui hai accesso SSH$REMOTEHOST
:la macchina a cui $PROXYHOST può connettersi, ma tu non puoi. Usa un nome host o un IP che$PROXYHOST
può usare per riferirsi alla macchina$SSHPORT
:la porta che sshd sta ascoltando su remotehost; molto probabilmente 22$LOCALPORT
:la porta locale in uscita SSH si sta aprendo sul tuo computer locale che inoltra alla porta 22 su$REMOTEHOST
Lascia quella connessione per mantenere il tunnel funzionante. Potresti voler aggiungere anche -N
al comando in modo che questa connessione non avvii una shell remota e non la chiuderai accidentalmente in seguito.
Una volta stabilito il tunnel, procedi come segue:
ssh -p $LOCALPORT localhost
Questo tenta una connessione SSH al tuo computer locale sulla porta che viene inoltrata al $REMOTEHOST
porta SSH di.
Soluzione 2:
Se sei disposto ad aggiornare la configurazione sul tuo client, puoi impostare il tuo client in modo che utilizzi la tua casella gateway come proxy. La tua casella di inoltro avrà bisogno di netcat installato e per ottenere i migliori risultati ti consigliamo di configurare l'autenticazione basata su chiave.
Ecco cosa uso nel mio .ssh/config per connettermi attraverso un altro host.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] "/bin/netcat -w 1 internal-ssh-host 22"
Con quanto sopra puoi semplicemente eseguire il comando ssh internal-ssh-host-proxy dalla tua macchina client.
Se l'host proxy SSH ha il client OpenSSH 5.4 o versioni successive, non hai bisogno di netcat e puoi invece utilizzare la modalità netcat incorporata.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] -W internal-ssh-host:22
Soluzione 3:
Delle risposte presentate, quella di Zordache è la migliore soluzione complessiva. Tuttavia, per i posteri, se vuoi semplicemente connetterti ad-hoc senza modificare la tua configurazione, usa -t
flag per allocare uno pseudo terminale insieme all'esecuzione di ssh direttamente sul relay.
ssh -t relay.example.com ssh internal.example.com
Soluzione 4:
Puoi inoltrare automaticamente le connessioni utilizzando OpenSSH. Nel tuo ~/.ssh/authorized_keys
file, puoi specificare un comando da eseguire, che potrebbe essere un SSH per una seconda macchina.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
Alla fine vedrai due prompt per Password:
:uno per il server di inoltro e uno per il server di destinazione. Puoi sempre rimuovere questo comportamento utilizzando i certificati.