Sì, usando ProxyCommand
nella tua configurazione SSH.
Crea un file di configurazione SSH nella tua home directory (a meno che tu non voglia fare questo a livello di sistema) ~/.ssh/config
,:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Ora puoi raggiungere direttamente la Macchina A usando
ssh user@internalmachine
Nota anche che ora hai un solo nome target host SSH per questo, puoi usarlo anche in altre applicazioni. Per esempio:
SCP per copiare i file.
scp somefile user@internalmachine:~/
Nelle tue applicazioni GUI:
utilizzare sftp://user@internalmachine/
come posizione per navigare sulla macchina.
Basato su KDE (Dolphin): usare fish://user@internalmachine/
Appunti
Cambia hostname.or.IP.address.internal.machine
e la porta ( 22
) sulla macchina che desideri raggiungere come se dalla unibroker
macchina.
A seconda delle versioni di netcat sull'host unibroker, l' -q0
opzione deve essere omessa. Per quanto riguarda l'autenticazione; stai fondamentalmente configurando due connessioni SSH dalla tua workstation. Ciò significa che sia l'host unibroker che l'host interno della macchina sono verificati / autenticati uno dopo l'altro (sia per la verifica della coppia di chiavi / password che per la chiave host).
Spiegazione
Questo approccio all'uso di ProxyCommand
'netcat' è solo un modo per farlo. Mi piace questo, perché il mio client SSH parla direttamente con la macchina di destinazione in modo che io possa verificare la chiave host dal mio client e posso usare la mia autenticazione della chiave pubblica senza usare un'altra chiave sul broker.
Ciascuno Host
definisce l'inizio di una nuova sezione host. Hostname
è il nome host o l'indirizzo IP di destinazione di tale host. User
è ciò che forniresti come parte dell'utente ssh user@hostname
.
ProxyCommand
verrà utilizzato come pipe per la macchina target. Usando SSH per la prima macchina e impostando direttamente un semplice 'netcat' ( nc
) sulla destinazione da lì, questo è fondamentalmente solo un semplice inoltro alla macchina interna dal broker tra quelli. Le -q
opzioni sono di silenziare qualsiasi output (solo una preferenza personale).
Assicurati di avere netcat installato sul broker (generalmente disponibile di default su Ubuntu) - netcat-openbsd o netcat-tradizionale .
Nota che stai ancora usando SSH con crittografia due volte qui. Mentre il canale netcat è in chiaro, il tuo client SSH sul tuo PC imposterà un altro canale crittografato con il computer di destinazione finale.