Ограничить ключ ssh, чтобы разрешить только rsync / передачу файлов?

У меня 2 сервера ( A и B ), и мне нужно rsync файлы с A на B с правами root. Можно разрешить вход в систему по ssh root ( PermitRootLogin без пароля ), но я хотел бы максимально заблокировать его. Я использую ключи ssh, и (на B ) корневой ключ ssh (в /root/.ssh/authorized_keys ) ограничен до A IP-адрес ( from = "xxxx ..." ).

Но как я могу заблокировать (этот ключ ssh) больше? Можно ли ограничить этот ключ ssh, чтобы разрешить только передачу rsync / файлов (и желательно ограничить его определенным каталогом)?

Исследование этого указывает на древние веб-страницы, на которых упоминается оболочка scponly или ] rrsync скрипт из rsync или rssh из OpenSSH. Но как я могу настроить их только для этого ключа, не делая всю мою корневую учетную запись rssh

0
задан 29 April 2019 в 11:08
2 ответа

Не жесткое ограничение на тип доступа, но, возможно, добавьте пароль к вашему ключу, а затем используйте агент, чтобы добавить ключ в ваш сеанс. Таким образом, вам нужно будет разблокировать ключ только один раз за сеанс для доступа без пароля по ssh / scp / rsync. В случае кражи у него есть пароль, защищающий его от использования.

Создать ключ с парольной фразой

ssh-keygen -f mykeyfile
#make sure you add a passphrase when asked

Добавить ключ к агенту перед использованием SSH / SCP / RSYNC

ssh-add mykeyfile
#enter password here
0
ответ дан 4 December 2019 в 12:15

rrsync предназначен для использования в качестве принудительной команды для конкретного ключа, поэтому он должен быть именно тем, что вам нужно.

Принудительная команда настраивается с помощью опции command для ключа в файле авторизованных ключей и затем всегда выполняется всякий раз, когда этот ключ используется для аутентификации, вне зависимости от того, какую команду запросил клиент. Но у него есть доступ к запрошенной команде, поэтому он может, например, реализовать проверенную, ограниченную версию и это то, что делает rrsync.

Вы используете ее следующим образом:

command="/path/to/rrsync -wo /allowed/directory/",restrict,from="a.b.c.d" ecdsa-sha2-nistp521 AAAAE...

Доступ к этому ключу ограничен только rsync для /допустимая/директория/. Опция -wo (только запись) означает, что rsync будет разрешена только для передачи на удаленную машину, -ro позволит только считывать с удаленной системы, не давая никакой опции, позволяющей передачу в обоих направлениях.

На локальной стороне, когда вы даете аргументы к rsync, вы должны указать удаленный путь относительно разрешенного каталога, так что на A вы бы сделали, например. rsync -options /local/path root@B: и not rsync -options /local/path root@B:/allowed/directory/.

См. также этот ответ на другой, но связанный с ним вопрос.

.
3
ответ дан 4 December 2019 в 12:15

Теги

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