Server di inoltro SSH con OpenSSH


10

È possibile utilizzare OpenSSH per inoltrare ad altri dispositivi abilitati SSH come switch router ecc. Se è possibile eseguire questa operazione senza creare un'applicazione su misura su Linux?

Grazie

Risposte:


9

Sicuro; basta usare il port forwarding / tunneling SSH. Avviare una connessione ssh al computer "proxy" utilizzando il comando seguente:

ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
  • $PROXYHOST: la macchina a cui hai accesso SSH
  • $REMOTEHOST: la macchina a cui $ PROXYHOST può connettersi, ma non è possibile. Utilizzare un nome host o un IP che è $PROXYHOSTpossibile utilizzare per fare riferimento alla macchina
  • $SSHPORT: la porta che sshd è in ascolto su remotehost; molto probabilmente 22
  • $LOCALPORT: la porta SSH locale in uscita si sta aprendo sul computer locale che inoltra alla porta 22 su $REMOTEHOST

Lasciare quella connessione in alto per far funzionare il tunnel. Potresti voler aggiungere anche -Nal comando in modo che questa connessione non visualizzi 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 alla $REMOTEHOSTporta SSH.


3

Se si desidera aggiornare la configurazione sul client, è possibile impostare il client in modo che utilizzi la casella gateway come proxy . La scatola di ritrasmissione avrà bisogno di netcat installato e per i migliori risultati vorrai avere un'impostazione di 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 username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"

Con quanto sopra puoi semplicemente eseguire il comando ssh internal-ssh-host-proxy dal tuo computer client.

Se l'host SSH proxy ha il client OpenSSH 5.4 o versioni successive non è necessario netcat e invece è possibile utilizzare la modalità netcat integrata.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22

Siamo spiacenti ma non stai usando OpenSSH, stai usando netcat per fare il relay tra server client e server?
aHunter il

Sta usando OpenSSH combinato con un'utilità molto comune che è disponibile quasi ovunque. Non è puro ssh, ma non lo definirei su misura.
Zoredache,

No, sono d'accordo che non è su misura, ma volevo sapere se è possibile inoltrare utilizzando OpenSSH in modo da utilizzare un client SSH standard e SSH in una casella che esegue OpenSSH che quindi automaticamente fornisce l'accesso SSH a un'altra macchina o più macchine. Grazie
aHunter il

1
@aHunter, per la cronaca ora esiste una 'modalità netcat' integrata in openssh 5.4 che offre una connessione openssh pura - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode nessuno strumento esterno sono necessari.
Zoredache,

3

Delle risposte presentate, Zordache è la migliore soluzione globale. Tuttavia, per i posteri, se si desidera semplicemente connettersi ad-hoc senza modificare la propria configurazione, utilizzare il -tflag per allocare uno pseudo terminale insieme all'esecuzione di ssh direttamente sul relè.

ssh -t relay.example.com ssh internal.example.com

soluzione più semplice senza file di modifica
Kartoch,

2

Puoi inoltrare le connessioni automaticamente usando OpenSSH. Nel tuo ~/.ssh/authorized_keysfile, puoi specificare un comando da eseguire, che potrebbe essere un SSH per un secondo computer.

[ssh client] ----> [ssh relay server] ----> [ssh target server]
    you          modified authorized_keys      target machine

Quello che finirai per vedere sono due istruzioni Password:: una per il server di inoltro e una per il server di destinazione. È sempre possibile rimuovere questo comportamento utilizzando i certificati.


sembra perfetto come configureresti sshd in openssh?
aHunter l'

Fare riferimento alla sezione [Comandi forzati] [1] in [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon

questa è un'idea fantastica. L'ultima cosa che voglio fare è aprire 100 porte discrete nel mio firewall con percorsi. Quindi ripetere per ridondanza. Questo suggerisce che posso creare 100 chiavi SSH e collegarle ognuna al proprio server. Ciò suggerisce anche che posso bloccare completamente il server di inoltro. Alcuni potrebbero chiamarlo VPN, ma lo vedo diversamente.
Richard
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.