
Возможно ли создать один туннель 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-подключение будет главным, последующие будут использовать его повторно. Новые подчиненные соединения будут доступны очень быстро. Никаких начальных накладных расходов на обмен ключами и т. д.