Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have been using the following command to connect to a server, which connects to another server and runs tail -f on it:

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

This so far works fine. However, when I want to quit the tail process by pressing ctrl+c, I do not quit the tail process, but the ssh process. This leaves the tail process on the remote server running, which obviosly is not a very good idea.

Does any one have an idea how I could fix this command line? I also would be interested if there is tool, running on os x, that would allow to comfortably switch between viewing different files on the remote server.

share|improve this question

migrated from stackoverflow.com Nov 30 '11 at 14:08

This question came from our site for professional and enthusiast programmers.

    
Couldn't you use tmux or screen on the remote servers? That's what I've always done. –  Rob Nov 30 '11 at 14:10
    
See this Q&A : To get it working in command line or in the shell, the ssh agent shall be forwarded too, eg using the ssh option "A" (see ssh man page), like : ssh -A user_foo@serverB "my_cmd" –  hornetbzz Nov 30 '11 at 16:25

1 Answer 1

up vote 1 down vote accepted

If you have netcat installed on server1.com (you probably do), you may want to use the ssh directive ProxyCommand to seamlessly hop across server1.com; thus, when you press Ctrl+C, it will only terminate the command on server2.com, not your SSH session.

Example of your ~/.ssh/config (create the file if it doesn't exist; append to end if it does):

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

What happens here:

  • ssh connects to server1.com
  • it remotely connects from there to server2.com (using nc)
  • which ferries the data through server1.com

This is completely transparent to your ssh client, so you can work with server2.com as if you were connected directly (e.g. SFTP, X forwarding, TCP forwarding, etc.)

For a more detailed explanation (as well as extending this to multiple hops), see this article, or this similar question on SU.

share|improve this answer
    
Thanks. After some more configuration this gives me a nice shortcut to ssh to server2: "ssh server2.com"... However, if I use "ssh server2.com tail -f file.log" I end up having the same problem. Ctrl+c kill the ssh connection, and leaves the tail process running. I want to run this command in a script, which opens multiple windows etc... so, I can not just ssh to server2 and manually type in the tail command. –  codeySmurf Nov 30 '11 at 14:46
    
Accepting your answer, as I never found myself wanting to script tail commands on remote servers, as connecting got much easier using your suggested configuration... I guess there is no more need to find an answer for my initial question –  codeySmurf Mar 12 '12 at 19:05

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.