Да, используя ProxyCommand
в вашей конфигурации SSH.
Создайте файл конфигурации SSH в своем домашнем каталоге (если вы не хотите делать это для всей системы) ~/.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
Теперь вы можете связаться с машиной A напрямую, используя
ssh user@internalmachine
Также обратите внимание, что теперь у вас есть одно целевое имя хоста SSH, вы можете использовать его и в других приложениях. Например:
SCP для копирования файлов.
scp somefile user@internalmachine:~/
В ваших приложениях с графическим интерфейсом:
использовать sftp://user@internalmachine/
в качестве местоположения для просмотра на машине.
На основе KDE (Dolphin): использование fish://user@internalmachine/
Примечания
Измените hostname.or.IP.address.internal.machine
и порт ( 22
) на машину, к которой вы хотите подключиться, как если бы вы были с unibroker
машины.
В зависимости от версии netcat на хосте unibroker, эта -q0
опция должна быть опущена. Что касается аутентификации; вы в основном настраиваете два SSH-соединения со своей рабочей станции. Это означает, что как хост unibroker, так и хост internalmachine проверяются / аутентифицируются один за другим (как для пар ключей / паролей, так и для проверки ключа хоста).
объяснение
Такой подход к использованию ProxyCommand
и «netcat» является лишь одним из способов сделать это. Мне это нравится, потому что мой SSH-клиент общается напрямую с целевым компьютером, чтобы я мог проверить ключ хоста с моего клиента и использовать аутентификацию с открытым ключом, не используя другой ключ в брокере.
Каждый Host
определяет начало нового раздела хоста. Hostname
является целевым именем хоста или IP-адресом этого хоста. User
это то, что вы бы предоставили в качестве пользователя ssh user@hostname
.
ProxyCommand
будет использоваться в качестве трубы для целевой машины. Используя SSH для первой машины и напрямую настраивая простой «netcat» ( nc
) для цели оттуда, это в основном просто открытый текст на внутреннюю машину от посредника между ними. Эти -q
опции , чтобы заглушить любой выход (только личное предпочтение).
Убедитесь, что Netcat установлены на брокере (обычно доступен по умолчанию в Ubuntu) - либо Netcat-OpenBSD или Netcat-традиционного .
Обратите внимание, что вы все еще используете SSH с шифрованием дважды здесь. Пока канал netcat является открытым текстом, ваш SSH-клиент на вашем ПК настроит другой зашифрованный канал с конечным целевым компьютером.