![来自配置文件的 SSH 反向隧道](https://linux22.com/image/747503/%E6%9D%A5%E8%87%AA%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84%20SSH%20%E5%8F%8D%E5%90%91%E9%9A%A7%E9%81%93.png)
我正在寻找一个像CLI 参数LocalForward
一样工作的ssh 客户端配置指令-L
但对于-R
参数
总结完整问题详情
数据:
repoServer -> myComputer -> NAT -> stagingServer
我有一个未暴露给互联网的本地 git 存储库服务器和一个我必须在其上部署我的存储库的远程暂存服务器。
为此,我使用反向套接字通过 ssh 连接到远程 stagingServer。
当前配置我的电脑:
文件:~/.ssh/config
Host StagingServer
Hostname staging.acme.com
User username
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_username
ForwardAgent yes
我运行的是:
ssh StagingServer -R 8022:repository.local:22
当前配置暂存服务器:
文件:~/.ssh/config
Host repository
Hostname localhost
User git
Port 8022
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_deployer
我可以运行:
git clone git@repository:myProject.git
一切正常,但是...最后
问题:
是否可以在 ssh 客户端配置文件 (~/.ssh/config) 中指定打开反向隧道,这样我就不必添加-R 8022:repository.local:22
答案1
显然你要找的是RemoteForward,你可以在ssh_config Doc中找到具体的...
文档:https://linux.die.net/man/5/ssh_config (搜索 RemoteForward)。它的解释是不言自明的。
远端转发
指定通过安全通道将远程计算机上的 TCP 端口从本地计算机转发到指定的主机和端口。第一个参数必须是 [ bind_address:]port,第二个参数必须是 host:hostport。可以通过将地址括在方括号中或使用其他语法来指定 IPv6 地址:[ bind_address/]port 和 host/hostport。可以指定多个转发,并且可以在命令行上提供其他转发。仅当以 root 身份登录远程计算机时才可以转发特权端口。
然后配置我的电脑变成:
文件:~/.ssh/config
Host StagingServer
Hostname staging.acme.com
User username
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_username
ForwardAgent yes
RemoteForward 8022 repository.local:22