Um simples encaminhamento de porta TCP não pode fazê-lo: o nome de usuário é mencionado apenas no protocolo SSH, portanto, se você insistir em começar com ssh git@host
, terá de haver dois handshakes completos de autenticação SSH. Eu não estou ciente de um proxy SSH genérico que poderia fazer isso de forma transparente. Você pode automatizar o segundo salto do lado do servidor, por exemplo fazendo um script de shell ssh -p 2222 localhost
do shell do usuário no host externo. Mas isso não seria compatível com muitos benefícios do SSH, como port-forwarding, sftp, scp, ...
A melhor maneira seria personalizar o lado do cliente. Por exemplo. em ~ / .ssh / config
Host git_host
Hostname host
Port 2222
Username git
e, em seguida, ssh git_host
(em vez de ssh git@host
).
Se você tiver que percorrer primeiro o host externo (por exemplo, porque você não tem visibilidade direta para a porta 2222), então você pode usar estes truques aqui , por exemplo
Host git_host
Hostname host
Username git
ProxyCommand ssh -q git@host nc -q0 localhost 2222
(pode não ser 100% correto, brincar com as opções)