У меня 2 сервера (A
& B
), и мне нужны файлы rsync из A
к B
как корень. Возможно разрешение root ssh входа (PermitRootLogin without-password
), но я бы хотел как можно больше его заблокировать. Я использую ssh-ключи, и (на B
) корневой ключ ssh (в /root/.ssh/authorized_keys
) ограничен A
IP-адрес (from="x.x.x.x ..."
).
Но как я могу заблокировать (этот ssh-ключ) больше? Можно ли ограничить этот ключ ssh, чтобы разрешить только передачу rsync / файла (и предпочтительно ограниченный определенным каталогом)?
Изучив это, я обнаружил, что на древних веб-страницах упоминается scponly
оболочка, или rrsync
скрипт из rsync, или rssh
из OpenSSH. Но как я могу настроить их только для этого ключа, не делая всю мою корневую учетную запись rssh
😉?
rrsync
предназначен для использования в качестве принудительной команды для определенного ключа, поэтому он должен быть именно тем, что вам нужно.
Принудительная команда настраивается с помощью command
для ключа в файле авторизованных ключей и затем всегда запускается всякий раз, когда этот ключ используется для аутентификации, независимо от того, какую команду запросил клиент. Но у него есть доступ к запрошенной команде, поэтому он может, например, реализовать проверенную, ограниченную версию, и вот что rrsync
делает.
Вы используете это так:
command="/path/to/rrsync -wo /allowed/directory/",restrict,from="a.b.c.d" ecdsa-sha2-nistp521 AAAAE...
Доступ для этого ключа ограничен rsync для /allowed/directory/
только. В -wo
(только запись) означает, что rsync
будет разрешено только отправить к удаленная машина, -ro
позволит только читать из удаленная система, не предоставляя возможности, разрешила бы передачу в обоих направлениях.
На местной стороне, когда вы аргументируете rsync
вы должны указать удаленный путь относительно разрешенного каталога и т. д. A
вы бы сделали, например. rsync -options /local/path root@B:
и не rsync -options /local/path root@B:/allowed/directory/
.
Смотрите также этот ответ на другой, но связанный с этим вопрос.
Не жесткое ограничение на тип доступа, но, возможно, добавьте пароль к вашему ключу, а затем используйте агент, чтобы добавить ключ в ваш сеанс. Таким образом, вам нужно будет разблокировать ключ только один раз за сеанс для доступа без пароля по ssh / scp / rsync. В случае кражи у него есть пароль, защищающий его от использования.
Создать ключ с парольной фразой
ssh-keygen -f mykeyfile
#make sure you add a passphrase when asked
Добавьте ключ к агенту перед использованием SSH / SCP / RSYNC
ssh-add mykeyfile
#enter password here