Для этого есть как минимум два способа:
Взгляните на http://ipxe.org/appnote/work_around_bios_halting_on_ipxe_exit# examples , одна из этих команд может сработать для вас:
chain $ {server} /grub4dos.exe --config-file = "find --set-root / BOOTMGR; chainloader / BOOTMGR" {{1} } chain $ {server} /grub4dos.exe --config-file = "root (hd0,1); chainloader +1"
В настоящее время я использую следующее, поскольку я построил это, прежде чем я обнаружил, что страницу в GRUB4DOS на сайте iPXE. Создайте ISO-образ, содержащий ISOLINUX и эту конфигурацию:
NOESCAPE 1
PROMPT 0
ALLOWOPTIONS 0
DEFAULT chain-hd0-2
LABEL chain-hd0-2
СКАЗАТЬ Цепочку hd0 2 ...
COM32 chain.c32
ДОБАВИТЬ hd0 2
И загрузить его, используя (у вас чтобы использовать здесь 0x81, потому что по умолчанию используется 0x80, который переопределяет локальный диск):
sanboot --drive 0x81 $ {server} /chain-hd0-2.iso
Пока можно выполнитьsocat
локально и наgateway
(или даже просто bash
и cat
на gateway
, см. последний пример! )и разрешено не использовать pty для очистки 8 бит, можно установить туннель через ssh. Вот 4 примера, улучшающие предыдущий:
(для его разветвления потребуется одно соединение ssh на туннель, что не очень хорошо ).Необходимость избежать :
для того, чтобы socat принял команду exec:
терм1:
$ socat tcp-listen:12345,reuseaddr exec:'ssh user1@gateway exec socat - tcp\:devbox\:22',nofork
терм2:
$ ssh -p 12345 user2@localhost
терм1:
user1@gateway's password:
терм2:
user2@localhost's password:
socat
должен оставаться главным, так что нетnofork
:
терм1:
$ socat exec:'ssh user1@gateway exec socat - tcp\:devbox\:22' tcp-listen:12345,reuseaddr
user1@gateway's password:
терм2:
$ ssh -p 12345 user2@localhost
user2@localhost's password:
ControlMaster
ssh позволяет разветвляться, используя только одно ssh-подключение к шлюзу, что дает поведение, похожее на обычную переадресацию портов:
терм1:
$ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket user1@gateway
user1@gateway's password:
терм2:
$ socat tcp-listen:12345,reuseaddr,fork exec:'ssh -o ControlPath=~/mysshcontrolsocket user1@gateway exec socat - tcp\:devbox\:22'
терм3:
$ ssh -p 12345 user2@localhost
user2@localhost's password:
bash
и cat
наgateway
При использованииbash
встроенного -в перенаправлении tcp и двух полудуплексных -дуплексных cat
команд (для полного -дуплексного результата )не даже нужен пульт socat
или netcat
. Обработка нескольких уровней вложенных и экранированных кавычек была немного неудобной, и, возможно, ее можно было бы сделать лучше или упростить с помощью удаленного сценария bash
. Необходимо позаботиться о том, чтобы разветвление cat
использовалось только для вывода :
терм1 (без изменений):
$ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket user1@gateway
user1@gateway's password:
терм2:
$ socat tcp-listen:12345,reuseaddr,fork 'exec:ssh -T -o ControlPath=~/mysshcontrolsocket user1@gateway '\''exec bash -c \'\''"exec 2>/dev/null 8<>/dev/tcp/devbox/22; cat <&8 & cat >&8"\'\'\'
терм3:
$ ssh -p 12345 user2@localhost
user2@localhost's password:
Я бы просто настроил другой sshd для работы на другом порту.
Измените настройки, чтобы разрешить tcpforwarding.
cp /etc/ssh/sshd{,-second}_config
Редактировать sshd -второй _конфиг
Port 22220
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-second.service
Измените /etc/systemd/system/sshd -second.service следующим образом:
Description=OpenSSH server second instance daemon
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS
Строка ExecStart может отличаться в зависимости от версии.
systemctl daemon-reload
systemctl enable sshd-second.service --now
Дополнительную информацию можно найти здесь :
https://access.redhat.com/solutions/1166283
Теперь вы сможете пересылать все, что захотите.
Идея выше хороша! Вот моя общая версия конфигурации ssh _, когдаProxyJumpне работает , потому что для AllowTcpForwarding установлено значение no, а моя оболочка по умолчанию — BASH:
ProxyCommand=ssh -T user1@gateway "exec 3<>/dev/tcp/%h/%p 2<&- ; cat <&3 & cat >&3 ; kill $!"
Он мог бы заменить ProxyJump для меня в ситуациях, когда он был отключен на сервере перехода, но я действительно не хотел пересылать туда свой закрытый ключ или вводить какие-либо пароли без дополнительного уровня шифрования. Использование других SSH _AUTH _SOCK в качестве root или полная запись сеансов терминала с помощью нажатия клавиш — это реальные вещи.
Но, пожалуйста, всегда следите за тем, чтобы не нарушать применимые к вам политики!