SSH: как изменить полученные символы?

Я хотел бы настроить свой сервер Ubuntu (без X Windows) для изменения управляющих символов , полученных от клиентов SSH . Потому что по некоторым причинам я не могу изменить оригинальные нажатия клавиш на удаленном клиенте.

  1. У меня есть root-доступ к серверу. Доступ к консоли, а также SSH.
  2. OpenSSH установлен там. Но в случае необходимости можно заменить его на что-то другое.

Чтобы быть более конкретным. Я хотел бы, например, обменять Ctrl и F10, чтобы F10 + c распознавался как Ctrl + c.

Заранее спасибо!

П.С. Пожалуйста, не предлагайте никаких решений, основанных на модификации клиентского компьютера. Давайте предположим, что у меня нет доступа к клиентскому компьютеру.

1
задан 17.05.2020, 20:37

1 ответ

Когда пользователь "Джон" входит в систему до ssh, этому дают оболочку---в зависимости от Вашей конфигурации, это может отличаться, но по умолчанию является их оболочкой по умолчанию, которая по умолчанию является bash. (1)

bash выполнит весь стандарт init файлы: в основном /etc/profile, и .profile в /home/john. Можно добавить записи контурной карты в любой из этих файлов (первый находится под контролем суперпользователя, последний находится под контролем Джона).

Видят, например https://stackoverflow.com/questions/4200800/in-bash-how-do-i-bind-a-function-key-to-a-command

Теперь, Ctrl-C является вполне функцией низкого уровня, идущей прямо через отправку сигнала к рабочему процессу. Я не знаю, можно ли повторно отобразить его.

(1) не для меня, например; я имею zsh как оболочка по умолчанию. YMMV.

0
ответ дан 17.05.2020, 20:38
  • 1
    Ну, F10 является довольно определенной и длинной escape-последовательностью. Я думаю, что возможно просто заменить его " ctrl" последовательность, и это будет более или менее безопасно. Так или иначе я соглашаюсь с Вами, это был бы грязный взлом. – stonar96 17.05.2020, 20:38
  • 2
    Я понимаю правильно, я должен буду повторно отобразить его во всех программах, которые я запускаю также, не удар только? В примере в Vim и Emacs. – Solomon Slow 17.05.2020, 20:39
  • 3
    Я думаю так. Ssh видят просто символы---карта между клавишами, которые Вы нажимаете, и отправленные символы клиентский материал, не сервер. Я имею в виду после нажатия клавиши с маркировкой " A" клиент отправляет на сервер код ASCII/utf8/whatever для символа " A"---, который это не имеет никакого способа знать, какой ключ точно генерировал его. И помещая фильтр между клиентом и (получение) оболочка является, ну, в общем, не хорошей идеей---при получении " ctrl-c" (повреждение) символ, как делают Вас, знает если it' s часть двоичного блоба данных или пользователя нажал ctrl-c? – JB Nizet 17.05.2020, 20:39

Теги

Похожие вопросы