Мне нужно задание cron для передачи файла между серверами с использованием аутентификации scp и kerberos. Системный пользователь для задания находится в / etc / passwd на обеих машинах, и для Kerberos auth был создан действительный keytab (с -randkey). Сценарий задания cron вызывает kinit, затем scp, затем kdestroy. Однако scp не будет работать, если я не изменю / sbin / nologin в / etc / passwd на допустимую оболочку, например / bin / bash.
Вопрос №1: это дыра в безопасности для указания оболочки?
Вопрос №2: это «правильный» способ сделать это?
заранее спасибо
вопрос №1 обычно не является проблемой, если только этот пользователь не является пользователем root. Есть также другие слои, которые вы можете использовать для ограничения доступа; iptables, tcpwrappers, from=
параметр в .ssh / authorized_keys и pam_access, чтобы назвать несколько.
Вместо того, чтобы использовать scp
, который является отдельной программой и должен вызываться с параметрами из оболочки, вы можете использовать sftp
. На сервере установите оболочку учетной записи службы на sftp-server:
# RHEL systems
usermod -s /usr/libexec/openssh/sftp-server username
# debian systems
usermod -s /usr/lib/sftp-server username
Тогда позвони sftp
в пакетном режиме (-b пакетный файл) для неинтерактивного использования.
Ответ 1: Может быть. Если вы отключите любой другой метод аутентификации и, следовательно, принудительно используете ключ, и вы считаете, что этот ключ надежен, то
Ответ 2: Без допустимой оболочки scp сбросит сеанс до передачи каких-либо файлов, что является позором. Вроде scponly делает то что хотите (http://www.sublimation.org/scponly/wiki/index.php/Main_Page).