Назад | Перейти на главную страницу

Ограничить SSH-ключ только SCP

Проблема:

У меня нет корневого доступа к серверу (т.е. я не могу / не хочу изменять конфигурацию общесистемного сервера), и я хочу использовать scp с альтернативным файлом идентификации (например, .ssh/id_rsa_for_scp) для автоматизации загрузки некоторых файлов с сервера, но я не хочу того же ключ для доступа к серверу через ssh.

После копирования ключевого файла на сервер:

ssh-copy-id -i ~/.ssh/id_rsa_for_scp legendaryuser@192.168.1.1

(Чтобы упростить пример, мы предположим, что клиентский компьютер ~ / .ssh / config уже настроен. Подробнее о ~/.ssh/config бегать man ssh_config)

Host testmachine
    Hostname 192.168.1.1
    User legendaryuser
    BatchMode yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_rsa_for_scp

Вам нужно будет отредактировать сервер /home/legendaryuser/.ssh/authorized_keys файл.

Из:

ssh-rsa AAAAAC3nZCXExxHUEBR...

Кому: (эта версия позволяет скачивать и выгружать)

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...

Если вы хотите ограничить scp «режимом только для загрузки» и только файлами из определенного каталога, выполните:

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...

И наконец, давайте на всякий случай добавим к ключу еще несколько ограничений:

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo ERRO Access Denied; fi",no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAAC3nZCXExxHUEBR...

Вы можете увидеть более подробную информацию о authorized_keys файл, запустив:

man sshd

Ps: Еще можно добавить from=xxx.xxx.xxx.xxx для ограничения использования ключа от определенного IP-адреса или сети.

Pps: Извините за мой английский, я не носитель языка.