Использовать netcat для соединения через брандмауэр?

Использовать netcat для соединения через брандмауэр?

У меня есть машина за брандмауэром. Это моя машина, я настроил ssh, но она полностью забрана брандмауэром. Моим решением было использовать обратную оболочку, настроенную на основе cron, для повторного подключения в случае сбоя с помощью netcat. Команда bash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1и на моем локальном компьютере nc -l 10000. До сих пор это работало, потому что я могу сказать ему присоединиться к моей частной VPN с помощью команды. По какой-то причине эта команда не работает. Итак, я могу «войти» через порожденную оболочку bash, но я не могу вернуться по ssh на свой компьютер, потому что Pseudo-terminal will not be allocated because stdin is not a terminal.я никогда не настраивал ключи ssh на этой системе, и она не позволяет мне войти с паролем.

Итак, я пытался найти решение с помощью netcat, но безуспешно. Я представляю себе что-то вроде этого:

[сервер] ---netcat--> [мой-компьютер:порт1]

так что я могу подключиться к этому, чтобы войти на сервер sshd и исправить все, что нужно исправить. Но я не могу понять команды netcat, которые бы это сделали. Есть ли помощь?

решение1

Нашел ответ для остального интернета (и для себя). Вот как добиться переадресации портов только с помощью netcat (проверено, работает на OS X El Capitan):

На сервере за (входящим) брандмауэром:

nc localhost 22 >& /dev/tcp/<your-hostname>/<open port on local computer, i.e. 9000> 0>&1

На локальном компьютере:

cd /tmp; mkfifo backpipe
nc -l 9000 0<backpipe | nc -l 9001 | tee backpipe

На локальном компьютере, отдельный терминал:

ssh localhost -p 9001

Связанный контент