ssh를 통해 다른 서버에 연결하는 서버에서 tail -f 실행


2

다음 명령을 사용하여 다른 서버에 연결하고 tail -f를 실행하는 서버에 연결했습니다.

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

이것은 지금까지 잘 작동합니다. 그러나 ctrl + c를 눌러 꼬리 프로세스를 종료하려면 꼬리 프로세스가 아니라 ssh 프로세스가 종료됩니다. 이로 인해 원격 서버에서 테일 프로세스가 실행되고 있지만 이는 그리 좋은 생각이 아닙니다.

아무도이 명령 줄을 어떻게 고칠 수 있는지 알고 있습니까? 또한 os x에서 실행되는 원격 서버의 다른 파일을 편안하게 전환 할 수있는 도구가 있는지 관심이 있습니다.


원격 서버에서 tmux 또는 화면을 사용할 수 없습니까? 그것이 내가 항상 한 일입니다.
— Rob

이 Q & A 참조 : 명령 행 또는 쉘에서 작동하게하려면 ssh 에이전트도 전달해야합니다. 예를 들어 ssh 옵션 "A"(ssh man 페이지 참조)를 사용하십시오. ssh -A user_foo @ serverB "my_cmd"
— hornetbzz

답변:


1

netcat을 server1.com에 설치 한 경우 (아마도 가능) ssh 지시문 ProxyCommand을 사용하여 server1.com을 원활하게 홉할 수 있습니다. 따라서 Ctrl + C를 누르면 SSH 세션이 아닌 server2.com의 명령 만 종료됩니다.

귀하의 예 ~/.ssh/config(파일이 존재하지 않으면 파일을 작성하고 파일이 있으면 추가하십시오) :

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

여기서 일어나는 일 :

  • ssh는 server1.com에 연결
  • 원격으로 거기에서 server2.com으로 연결합니다 (nc 사용)
  • server1.com을 통해 데이터를 전달하는

이것은 ssh 클라이언트에게 완전히 투명하므로 직접 연결된 것처럼 (예 : SFTP, X 전달, TCP 전달 등) server2.com을 사용할 수 있습니다.

더 자세한 설명 (이를 여러 홉으로 확장하는 것)에 대해서는이 기사 또는 이와 유사한 SU 관련 질문을 참조하십시오 .


감사. 더 많은 구성을 한 후에 이것은 ssh를 server2에 대한 멋진 지름길을 제공합니다 : "ssh server2.com"... 그러나 "ssh server2.com tail -f file.log"를 사용하면 같은 문제가 발생합니다. Ctrl + c는 ssh 연결을 종료하고 테일 프로세스를 실행 상태로 둡니다. 여러 창 등을 여는 스크립트 에서이 명령을 실행하고 싶습니다. 따라서 server2로 ssh하고 수동으로 tail 명령을 입력 할 수는 없습니다.
— Steve Hummingbird

나는 당신의 제안 구성을 사용하여 훨씬 쉬워졌습니다 연결하는 나 자신이 내 최초의 질문에 대한 대답을 찾기 위해 더 이상 필요가 없습니다 것 같아요 ..., 원격 서버에 명령 스크립트 꼬리에 역부족 결코 같은 답변을 수락
— 스티브 벌새
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.