有没有可能有这样的configuration:
因此,命令ssh git@host将产生与ssh -p 2222 git@host相同的结果。
基本上我尝试在ssh上有一个反向代理,但据我所知,我们不能使用子域来区分ssh传入的连接,我想知道如果我们能用用户的方法完成这种事情。
编辑:
原因是我已经在Docker容器中设置了gitolite服务器,所以最后我有一个ssh守护进程,它监听端口2222的git目的。 此外,我有一个“常规”SSH端口监听端口22(我想保留它)。
当然,我可以通过端口2222访问git服务器(如果我从外部打开它),但我想知道是否可以使用远程“常规”ssh服务器,然后本地redirect到“git”ssh用户git 。
所以交通将是这样的用户git的东西:
client <==> 22:server:2222:git_container
一个简单的TCP端口转发不能这么做:用户名只能在SSH协议中提到,所以如果你坚持用ssh git@host ,那么必须有两个完整的SSHauthentication握手。 我不知道一个通用的SSH代理,可以做到这一点透明。 您可以自动化第二跳服务器端,例如通过在外部主机上创build一个shell脚本ssh -p 2222 localhost用户的shell。 但是,这将不符合许多SSH的好处,如端口转发,SFTP,…
更好的方法是定制客户端。 例如在〜/ .ssh / config中
Host git_host Hostname host Port 2222 Username git
然后ssh git_host (而不是ssh git@host )。
如果你必须先通过外部主机(例如,因为你不能直接看到端口2222),那么你可以在这里使用这些技巧 ,例如
Host git_host Hostname host Username git ProxyCommand ssh -q git@host nc -q0 localhost 2222
(可能不是100%正确的,玩这个选项)