是否可以创建一个 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 连接将成为主连接,下一个将重新使用它。新的从属连接将非常快速地可用。没有初始密钥交换开销等。