Так, використовуючи 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 на вашому ПК налаштує ще один зашифрований канал із кінцевою машиною націлення.