
В настоящее время я использую этот стандарт netcat -e /bin/sh
для предоставления удаленной оболочки для доступа других компьютеров.
Проблема в том, что эта оболочка довольно ужасна, поскольку имеет ограниченный вывод. Например, если я отправлю какую-то недопустимую команду xxxxx
, я не получу ответа от машины, но на самой машине в терминале будет ошибка с надписью /bin/sh: xxxxx: not found
.
Если я использую оболочку для запуска консольного приложения, часто я не могу видеть ничего, что выводит консольное приложение, и я не могу сделать это Ctrlzчерез оболочку, потому что это закроет netcat на машине. Это беспорядок, я бы хотел, чтобы это работало так же, как SSH (который я не могу использовать).
Вместо того, чтобы передавать все по конвейеру, /bin/sh
как я делаю с netcat, можно ли создать пользовательское приложение, которое будет показывать мне все выходные данные в терминале? Возможно ли как-то получить текст с терминала, независимо от того, какой процесс написал в него?
Можно ли запустить его sshd
на коробке, а затем netcat -e "ssh root@localhost"
сделать это таким образом? (Я пробовал это, похоже, не работает).
Я ищу любое решение.
решение1
Создание "пользовательского приложения" было бы повторной реализацией telnet / ssh. Это, конечно, возможно, но не обязательно.
Если на хосте есть sshd (или telnetd), вы можете запустить его из сеанса netcat-shell с помощью eg /usr/sbin/sshd -p <port> -D 2>&1
, а затем сделать это ssh -p <port> root@<host>
на клиенте. Возможно, вам придется добавить дополнительные параметры в sshd, возможно, создать файл конфигурации и указать его в командной строке:/usr/sbin/sshd -f <config-file> ...
Если нет, вы можете использовать сессию netcat для загрузки telnetd или sshd, настроить необходимую среду/конфигурацию и запустить ее на каком-либо порту.
Вы также можете создать оболочку вокруг своей оболочки, чтобы перенаправить stderr в stdout, например /bin/sh 2>&1
, , что позволит вам видеть stderr в сеансе netcat, но не предоставит вам функциональности «реального терминала».
Другой вариант — DISPLAY=<client>:0 xtrem
если на хосте установлен xterm или его эквивалент, а на клиенте — X-сервер.