Так, використовуючи 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
Тепер ви можете дістатися до Machine A безпосередньо
ssh user@internalmachine
Також зауважте, що тепер у вас є одне цільове ім'я хоста SSH, ви можете використовувати це і в інших програмах. Наприклад:
SCP для копіювання файлів.
scp somefile user@internalmachine:~/
У ваших програмах GUI:
використовувати sftp://user@internalmachine/як місце для перегляду на пристрої.
На основі KDE (Дельфін): використання fish://user@internalmachine/
Примітки
Змініть hostname.or.IP.address.internal.machineі порт ( 22) на машину, до якої ви хочете доїхати, як ніби з unibrokerмашини.
Залежно від версій netcat на хості unibroker, -q0параметр повинен бути пропущений. Щодо аутентифікації; ви в основному встановлюєте два SSH-з'єднання зі своєї робочої станції. Це означає, що і хост unibroker, і хост внутрішньої машини перевірені / автентифіковані один за одним (як для підтвердження ключа, / пароля, так і для перевірки ключа хоста).
Пояснення
Такий підхід використання ProxyCommandта "netcat" - лише один із способів зробити це. Мені це подобається, тому що мій клієнт SSH спілкується безпосередньо з цільовою машиною, щоб я міг перевірити ключ хоста від свого клієнта, і я можу використовувати свою автентифікацію відкритого ключа, не використовуючи іншого ключа у брокера.
Кожен Hostвизначає початок нового хостового розділу. Hostname- цільове ім'я хоста або IP-адреса цього хоста. Userце те, що ви б надали як учасник користувача ssh user@hostname.
ProxyCommandбуде використовуватися як труба до цільової машини. Використовуючи SSH на першій машині та безпосередньо встановлюючи простий 'netcat' ( nc) до цілі звідти, це в основному лише простий текст вперед до внутрішньої машини від брокера між ними. Ці -qопції , щоб заглушити будь-який вихід (тільки особиста перевага).
Переконайтесь, що у брокера встановлена netcat (зазвичай вона доступна за замовчуванням в Ubuntu) - чи netcat-openbsd,
чи netcat-традиційна
.
Зверніть увагу, що ви все ще використовуєте SSH з шифруванням тут двічі. Поки канал netcat знаходиться в простому тексті, ваш клієнт SSH на вашому ПК налаштує ще один зашифрований канал із кінцевою машиною націлення.