У меня есть машина за брандмауэром. Это моя машина, я настроил 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