in esecuzione tail -f su un server che si connette a un altro server tramite ssh


2

Ho usato il seguente comando per connettermi a un server, che si connette a un altro server ed esegue tail -f su di esso:

ssh server1.com ssh server2.com tail -f file.log

Questo finora funziona benissimo. Tuttavia, quando voglio uscire dal processo di coda premendo ctrl + c, non esco dal processo di coda, ma dal processo ssh. Questo lascia il processo di coda sul server remoto in esecuzione, che ovviamente non è una buona idea.

Qualcuno ha idea di come potrei risolvere questa riga di comando? Sarei anche interessato se ci fosse uno strumento, in esecuzione su OS X, che consentirebbe di passare comodamente dalla visualizzazione di file diversi sul server remoto.


Non potresti usare tmux o screen sui server remoti? Questo è quello che ho sempre fatto.
Rob,

Vedi queste domande e risposte : Per farlo funzionare nella riga di comando o nella shell, anche l'agente ssh deve essere inoltrato, ad esempio usando l'opzione ssh "A" (vedi pagina man ssh), come: ssh -A user_foo @ serverB "my_cmd"
hornetbzz,

Risposte:


1

Se netcat è installato su server1.com (probabilmente lo fai), potresti voler usare la direttiva ssh ProxyCommandper saltare senza soluzione di continuità su server1.com; pertanto, quando si preme Ctrl + C, terminerà solo il comando su server2.com, non la sessione SSH.

Esempio del tuo ~/.ssh/config(crea il file se non esiste; aggiungi alla fine se esiste):

Host server2.com
  User piskvor
  ProxyCommand ssh -q server1.com nc -q0 server2.com 22

Che succede qui:

  • ssh si collega a server1.com
  • si collega in remoto da lì a server2.com (utilizzando nc)
  • che trasferisce i dati attraverso server1.com

Questo è completamente trasparente per il tuo client ssh, quindi puoi lavorare con server2.com come se fossi connesso direttamente (es. SFTP, X forwarding, TCP forwarding, ecc.)

Per una spiegazione più dettagliata (oltre a estenderla a più salti), consulta questo articolo o questa domanda simile su SU .


Grazie. Dopo qualche altra configurazione, questo mi dà un bel collegamento a ssh per server2: "ssh server2.com" ... Tuttavia, se uso "ssh server2.com tail -f file.log" finisco per avere lo stesso problema. Ctrl + c interrompe la connessione ssh e lascia in esecuzione il processo di coda. Voglio eseguire questo comando in uno script, che apre più finestre ecc ... quindi, non posso semplicemente ssh su server2 e digitare manualmente il comando tail.
Steve Hummingbird,

Accettare la tua risposta, poiché non mi sono mai trovato a voler scrivere i comandi di coda sui server remoti, poiché la connessione è diventata molto più semplice usando la configurazione suggerita ... Immagino che non sia più necessario trovare una risposta per la mia domanda iniziale
Steve Hummingbird
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.