Доступ к удаленным службам, как к локальным, с использованием одного SSH-подключения

Доступ к удаленным службам, как к локальным, с использованием одного SSH-подключения

Возможно ли создать один туннель SSH для обращения к удаленному хосту, как будто он находится в локальной системе, например, введите следующие псевдопримерылокальнои достичь желаемого эффекта:

  • Копировать базы данных: mysqldump remote | mysql localилиmysqldump local | mysql remote
  • Добавить текст к удаленным файлам:echo blah >> remote:file.txt
  • Изменить удаленные файлы:sed ... remote:file.txt
  • Выполнение удаленных команд:apk add blah

Если единое соединение невозможно, какой наиболее удобный способ добиться этого?

решение1

Для доступа к удаленному MySQL вы можете использовать localhost:12345, перенаправив:

ssh -Nf -L 12345:localhost:3306 user@remote

Для файловых операций вы можете смонтировать удаленный хост через sshfs:

mkdir /tmp/remote
sshfs user@remote:/ /tmp/remote
echo blah >> /tmp/remote/file.txt
sed ... /tmp/remote/file.txt

Выполнение удаленных команд работает как обычно через ssh:

ssh user@remote command ....

Вы можете сделать все это, используя всего одно соединение.если вы добавите это в свой ~/.ssh/config:

ControlMaster auto
ControlPath ~/.ssh/masters/%l%r@%h:%p

Первое ssh-подключение будет главным, последующие будут использовать его повторно. Новые подчиненные соединения будут доступны очень быстро. Никаких начальных накладных расходов на обмен ключами и т. д.

Связанный контент