Использовать 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