Estou confortável em usar o recurso ProxyCommand do ssh e posso usá-lo para percorrer vários hosts bastiões para alcançar o host final com eficiência. Mas eu simplesmente não consigo entender como ele realmente funciona no back-end.
Por exemplo. Eu tenho o seguinte arquivo de configuração.
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh [email protected] -W %h:%p"
Entendo que, para conectar-se ao host final
, o ProxyCommand será executado antes de fazer a conexão final.com
. Mas ainda não consigo entender a ordem das conexões.
E o que a opção -W %h:%p
faz? Eu entendo que é o recurso netcat e é semelhante ao nc %h %p
.
Então, tanto quanto meu entendimento aqui é a sequência de operações. Por favor, deixe-me saber se estou errado. Estou usando o arquivo de configuração especificado acima no meu exemplo.
- O usuário entra
ssh final
- Uma conexão ssh com o bastion.com criada.
- Um túnel netcat é criado a partir do bastion.com até a porta 22 do final.com. O stdin do netcat está conectado ao shell obtido na conexão com o bastion.com.
- Então agora temos uma conexão do nosso sistema para o final.com. A primeira metade dessa conexão é uma conexão ssh do nosso sistema para o bastion.com. A segunda metade dessa conexão é um túnel netcat de bastion.com para final.com.
- O
ssh final
comando Now toma a conexão acima como um proxy e encapsula seus dados através dessa conexão existente.
Além disso, eu também gostaria de saber se essas técnicas também são conhecidas como empilhamento ssh ?
linebreaks adicionados
fonte