Fab*_*biF 6 ssh port port-forwarding
是否可以有这样的配置:
因此,该命令ssh git@host将产生与ssh -p 2222 git@host.
基本上我尝试在 ssh 上使用一种反向代理,但我知道我们不能使用子域来区分 ssh 传入连接,我想知道我们是否可以通过用户方法来完成这种事情。
编辑:
原因是我在 Docker 容器中设置了一个 gitolite 服务器,所以最后我有一个 ssh 守护进程,它在端口 2222 上监听 git 目的。此外,我有一个“常规”ssh 守护进程,它侦听端口 22(我想保留它)。
当然,我可以通过端口 2222 访问 git 服务器(如果我从外部打开它),但我想知道是否可以从远程使用“常规”ssh 服务器,然后在本地将其重定向到“git”ssh 以进行用户git。
所以对于用户 git 来说,流量将是这样的:
client <==> 22:server:2222:git_container
简单的 TCP 端口转发无法做到这一点:用户名仅在 SSH 协议中进一步提及,因此如果您坚持以 开始ssh git@host,则必须有两次完整的 SSH 身份验证握手。我不知道有什么通用的 SSH 代理可以透明地做到这一点。您可以在服务器端自动化第二个跃点,例如,通过ssh -p 2222 localhost在外部主机上为用户的 shell 创建 shell 脚本。但这与 SSH 的许多优点不兼容,例如端口转发、sftp、scp……
更好的方法是定制客户端。例如在 ~/.ssh/config 中
Host git_host
Hostname host
Port 2222
Username git
Run Code Online (Sandbox Code Playgroud)
然后ssh git_host(而不是ssh git@host)。
如果您必须首先遍历外部主机(例如,因为您无法直接看到端口 2222),那么您可以在此处使用这些技巧,例如
Host git_host
Hostname host
Username git
ProxyCommand ssh -q git@host nc -q0 localhost 2222
Run Code Online (Sandbox Code Playgroud)
(可能不是 100% 正确,请尝试使用选项)
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |