В Ubuntu 11.10 я виявив, що можу заблокувати команди ssh, надіслані з і без -T, і заблокувати копіювання scp, дозволяючи при цьому переадресацію портів.
Зокрема, у мене є сервер redis на "somehost", прив'язаному до localhost: 6379, яким я хочу безпечно ділитися через ssh-тунелі іншим хостам, які мають файл файлів ключів, і в них з'явиться ssh:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
Це призведе до того, що порт-сервер redis, "localhost" 6379 на "somehost" з'явиться локально на хості, що виконує команду ssh, перестановленому на порт "localhost" 16379.
На віддаленому "somehost" Ось що я використав для санкціонованих_кілів:
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 keyuser@keyhost
Безрезультатно відключає більшість ssh-спроб, які хочуть відкрити термінал.
В дозвільному документі пояснюється, які порти дозволено пересилати, в цьому випадку порт 6379 - порт-сервер redis, який я хотів переслати.
Команда = "/ bin / echo do-not-send-command" відкликається назад "do-not-send-command", якщо комусь чи чомусь вдається надіслати команди хосту через ssh -T або іншим способом.
З недавнього Ubuntu man sshd
, авторизовані_keys / команда описана так:
command = "command" Вказує, що команда виконується кожного разу, коли цей ключ використовується для автентифікації. Команда, надана користувачем (якщо така є), ігнорується.
Спроби використовувати захищене копіювання файлів scp також не вдасться з відгомоном "do-not-send-command". Я знайшов, що sftp також не працює з цією конфігурацією.
Я думаю, що обмежена пропозиція оболонки, зроблена в деяких попередніх відповідях, також є хорошою ідеєю. Також я погодився б, що все детальне тут можна визначити з читання "man sshd" та пошуку в ньому "санкціонованих_кілій"
no-pty
не дозволяє відкривати інтерактивне бачення, воно нічого не запобігає виконанню команд, тому користувач може редагуватиauthorized_keys
файл, якщо у нього є доступ до чогось подібногоssh server 'sed -i -e s/no-pty// ~/.ssh/authorized_keys'
.