Как сделать переадресацию портов на этапе initramfs?

377
ceremcem

Я могу установить dropbear в initramfs и успешно подключиться к этому серверу ssh (IP:) my_initramfs_ipна этапе загрузки, как описано здесь .

Теперь я хочу выполнить переадресацию портов в качестве клиента на том же этапе. Для этого я установил dropbear ssh client ( dbclient) в initramfs и, чтобы проверить, работает ли он правильно, я попытался подключиться к одному из моих серверов в initramfs:

initramfs# dbclient user@myserver user@myserver password: ... 

Который работает отлично, и я могу войти в myserver. Теперь я хочу выполнить переадресацию портов, как обычно, когда загружается реальная система:

initramfs# dbclient -R 1234:localhost:22 myserver_ip 

Но переадресация порта просто не работает, когда я пытаюсь подключиться:

myserver$ ssh root@localhost -p 1234 

с ошибкой:

ssh_exchange_identification: read: Connection reset by peer 

Итак, как я могу сделать переадресацию портов на этапе загрузки?

Редактировать:

Я попытался добавить файлы библиотеки, которые dbclientоткрываются при выполнении успешной переадресации обратного порта в initramfs на всякий случай:

myserver$ strace dbclient -R 7000:localhost:22 user@1.1.1.1 2>&1 | grep open | grep lib | sed 's/open("//' | sed 's/",.*//' user@1.1.1.1's password:  /lib/x86_64-linux-gnu/libutil.so.1 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libnss_compat.so.2 /lib/x86_64-linux-gnu/libnsl.so.1 /lib/x86_64-linux-gnu/libnss_nis.so.2 /lib/x86_64-linux-gnu/libnss_files.so.2 

... но успеха нет.

0
Обоснование: Когда я устанавливаю свою ОС на раздел LUKS (целевой компьютер), мне нужно разблокировать диск по сети через SSH, как описано [здесь] (https://gist.github.com/ceremcem/53fd10092b5e82ed1dba5d3011ac54c6). Проблема в том, что SSH-соединение требует переадресации портов в удаленном брандмауэре, чтобы я мог подключиться к своей целевой машине. Я хочу подключить свою цель и поместить ее SSHD-порт на сервер, чтобы я мог подключить свою цель через свой сервер. Это устранит требование переадресации порта. ceremcem 6 лет назад 0
Я попытался упростить вопрос, удалив дополнительную экспериментальную часть `nc`, так что теперь это просто вопрос переадресации портов. ceremcem 6 лет назад 0
Да, это так. Сложность в том, что `... -R 1234: localhost: 22` по-прежнему не работает, даже если вы настроили интерфейс` lo`, но `... -R 1234: 127.0.0.1: 22` работает, когда` lo `вверх. Не могли бы вы скопировать свой комментарий в ответ? ceremcem 6 лет назад 0

1 ответ на вопрос

1
Kamil Maciorowski

Интерфейс обратной связи может быть недоступен на initramfsхосте. Может быть, все, что вам нужно, это

ifconfig lo up 

(Вдохновлен этим ответом на Unix & Linux SE ).

Похожие вопросы