На Ubuntu 11.10 я обнаружил, что могу блокировать команды ssh, отправленные с и без -T, и блокировать scp-копирование, а также разрешать переадресацию портов.
В частности у меня есть Redis-сервер на «somehost», связанного с локального хоста: 6379, что я хочу поделиться надежно через SSH туннелей других хостов, которые имеют файл_ключа и SSH с использованием:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 [email protected]
Этом приведет к тому, что redis-server, «localhost» port 6379 на «somehost» появится локально на хосте, выполняющем команду ssh, переназначен на «localhost» порт 16379.
На удаленном «somehost» Вот что я использовал для authorized_keys:
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here [email protected]
Не-pty отправляет большинство попыток ssh, которые хотят открыть терминал.
В документе разрешено указывать, какие порты разрешены для пересылки, в этом случае порт 6379 - порт redis-сервера, который я хотел переслать.
Команда = "/ bin/echo do-not-send-commands" перекликается с командами "do-not-send-commands", если кому-то или чему-то удается отправлять команды хосту через ssh-T или иначе.
Из команды недавней Ubuntu man sshd
, authorized_keys/описывается следующим образом:
Команда = «команда» Указывает, что команда выполняется всякий раз, когда эта клавиша используется для проверки подлинности. Команда, предоставленная пользователем (если таковая имеется), игнорируется .
Попытки использования безопасного шифрования файлов scp также потерпят неудачу с эхом «do-not-send-commands». Я обнаружил, что sftp также не работает с этой конфигурацией.
Я думаю, что предложение ограниченных оболочек, сделанное в некоторых предыдущих ответах, также является хорошей идеей. Кроме того, я согласен с тем, что все подробное описание здесь может быть определено из чтения «man sshd» и поиска в нем для «authorized_keys».
Но это не мешает пользователю указать другую команду в командной строке SSH, как `SSH использовать @ хост«/ bin/Баш»`, не так ли? – Fritz 2015-08-31 10:31:01
Да, это так, если предположить, что `user @ host` имеет rbash как оболочку. См. [Ограниченная оболочка] (http://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html) – 2015-08-31 13:23:10
Хорошо, я попробовал, и вы правы. Поскольку указанная команда выполняется оболочкой входа, выполнение `/ bin/bash` завершается с ошибкой, поскольку в ней содержатся слэши. – Fritz 2015-09-01 17:29:10