2

Я использовал следующую команду для подключения к серверу, который подключается к другому серверу и запускает на нем tail -f:

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

Это пока работает отлично. Однако, когда я хочу выйти из хвостового процесса нажатием ctrl+c, я не завершаю хвостовой процесс, а процесс ssh. Это позволяет запустить хвостовой процесс на удаленном сервере, что, безусловно, не очень хорошая идея.

Кто-нибудь есть идеи, как я мог бы исправить эту командную строку? Мне также было бы интересно, есть ли инструмент, работающий на OS X, который позволял бы удобно переключаться между просмотром различных файлов на удаленном сервере.

1 ответ1

1

Если у вас установлен netcat на server1.com (вероятно, так и есть), вы можете использовать директиву ssh ProxyCommand для беспрепятственного перехода через server1.com; таким образом, когда вы нажмете Ctrl+C, он прекратит выполнение только команды на server2.com, а не сеанса SSH.

Пример вашего ~/.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-клиента, поэтому вы можете работать с server2.com, как если бы вы были подключены напрямую (например, SFTP, X forwarding, TCP forwarding и т.д.)

Для более подробного объяснения (а также расширения его на несколько прыжков)см. Эту статью или аналогичный вопрос по SU.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .