Sim, usando ProxyCommand
na sua configuração SSH.
Crie um arquivo de configuração SSH em seu diretório pessoal (a menos que você queira torná-lo 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, também pode ser usado em outros aplicativos. Por exemplo:
SCP para copiar arquivos.
scp somefile user@internalmachine:~/
Nos seus aplicativos GUI:
use sftp://user@internalmachine/
como local para navegar na máquina.
Baseado no KDE (Dolphin): use fish://user@internalmachine/
Notas
Mude hostname.or.IP.address.internal.machine
e a porta ( 22
) para a máquina que você deseja alcançar como se fosse da unibroker
máquina.
Dependendo das versões do netcat no host unibroker, a -q0
opção deve ser omitida. Em relação à autenticação; você está basicamente configurando duas conexões SSH da sua estação de trabalho. Isso significa que o host unibroker e o host da máquina interna são verificados / autenticados um após o outro (para verificação de chave / senha e chave do host).
Explicação
Essa abordagem do uso de ProxyCommand
e 'netcat' é apenas uma maneira de fazê-lo. Eu gosto disso, porque meu cliente SSH se comunica diretamente com a máquina de destino para que eu possa verificar a chave do host do meu cliente e usar minha autenticação de chave pública sem usar outra chave no broker.
Cada um Host
define o início de uma nova seção de host. Hostname
é o nome do host ou o endereço IP de destino desse host. User
é o que você forneceria como parte do usuário ssh user@hostname
.
ProxyCommand
será usado como o tubo para a máquina de destino. Usando o SSH na primeira máquina e configurando diretamente um 'netcat' ( nc
) simples para o destino a partir daí, isso é basicamente apenas um texto sem formatação encaminhado para a máquina interna do intermediário entre eles. As -q
opções são silenciar qualquer saída (apenas uma preferência pessoal).
Certifique-se de ter o netcat instalado no broker (normalmente disponível por padrão no Ubuntu) - netcat-openbsd ou netcat-traditional .
Observe que você ainda está usando SSH com criptografia duas vezes aqui. Enquanto o canal netcat estiver em texto sem formatação, seu cliente SSH no seu PC configurará outro canal criptografado com a máquina de destino final.