Использовать 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
Другие вопросы по тегам