Sim, usando ProxyCommand
na configuração do SSH.
Crie um arquivo de configuração SSH em seu diretório pessoal (a menos que você queira fazer isso em todo o sistema), ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# ('user@unibroker' can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Agora você pode acessar a Máquina A diretamente usando
ssh user@internalmachine
Observe também que agora você tem um único nome de destino de host SSH para ele, você pode usá-lo em outros aplicativos também. Por exemplo:
-
SCP para copiar arquivos.
scp somefile user@internalmachine:~/
-
Em seus aplicativos GUI:
use
sftp://user@internalmachine/
como o local para navegar na máquina.Baseado no KDE (Dolphin): use
fish://user@internalmachine/
Notas
Altere hostname.or.IP.address.internal.machine
e a porta ( 22
) para a máquina que você deseja acessar como se fosse da máquina unibroker
.
Dependendo das versões do netcat no host unibroker, a opção -q0
deve ser omitida. Em relação à autenticação; basicamente você está configurando duas conexões SSH da sua estação de trabalho. Isso significa que o host unibroker e o host internalmachine são verificados / autenticados em relação a um após o outro (para verificação de chave / senha e chave de host).
Explicação
Essa abordagem do uso de ProxyCommand
e 'netcat' é apenas uma maneira de fazê-lo. Eu gosto disso, porque meu cliente SSH fala diretamente com a máquina de destino para que eu possa verificar a chave do host do meu cliente e eu posso usar minha autenticação de chave pública sem usar outra chave no broker.
Cada Host
define o início de uma nova seção do host. Hostname
é o nome de host ou endereço IP de destino desse host. User
é o que você forneceria como a parte do usuário em ssh user@hostname
.
ProxyCommand
será usado como o pipe para a máquina de destino. Usando o SSH na primeira máquina e configurando diretamente um 'netcat' simples ( nc
) para o destino a partir daí, este é basicamente apenas um texto simples encaminhado para a máquina interna do intermediário entre eles. As opções -q
são para silenciar qualquer saída (apenas uma preferência pessoal).
Certifique-se de ter o netcat instalado no broker (geralmente disponível por padrão no Ubuntu) - netcat-openbsd < img src="https://hostmar.co/software-small"> ou netcat-traditional < img src="https://hostmar.co/software-small"> .
Note que você ainda está usando o SSH com criptografia duas vezes aqui. Enquanto o canal netcat é texto plano, o seu cliente SSH no seu PC irá configurar outro canal criptografado com a máquina final de destino.