Меня смущает поведение параметров входа с restrict
или no-pty
, добавленных к ключу в ~/.ssh/authorized_keys
.
Для данного ключа я намеревался предотвратить любое взаимодействие, кроме запуска туннеля SSH к определенному локальному порту:
restrict,permitopen="localhost:80" ssh-rsa AAAAB3NzaC1yc2EAAA[...]3c7rmJT5/ tunnel@a.example.com
Фактический эффект заключается в том, что при идентификации с помощью соответствующего закрытого ключа я могу создать туннель, но, видимо, также выполнить произвольные команды:
tunnel@a $ ssh -i tunnel_rsa user@b.example.com
PTY allocation request failed on channel 0
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic x86_64)
[...]
You have new mail.
ls .ssh/
authorized_keys
id_rsa
id_rsa.pub
known_hosts
Примечание. PTY allocation request failed on channel 0
сообщении канала 0 в начале сеанса (что указывает на то, что опция входа в систему имеет определенный эффект) и команда ls .ssh/
с ее выводом.
Там нет подсказки, но это не то, что я собирался сделать. Может кто-нибудь, пожалуйста, пролить свет на это? Кроме того, каков предпочтительный метод, чтобы ограничить данный ключ только созданием туннеля?
Обновить
с restrict
туннель не очень работает:
$ curl localhost:8080
curl: (52) Empty reply from server
или используя HTTPie:
$ http :8080
http: error: ConnectionError: ('Connection aborted.', BadStatusLine("''",))
со следующим выводом из команды ssh -L ...
:
channel 2: open failed: administratively prohibited: open failed
Он работает с параметром no-pty
вместо restricted
, но исходная проблема остается.