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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .