使用系统用户通过 scp/kerberos 传输文件

使用系统用户通过 scp/kerberos 传输文件

我需要一个 cron 作业来使用 scp 和 kerberos 身份验证在服务器之间传输文件。该作业的系统用户位于两台机器的 /etc/passwd 中,并且已为 kerberos 身份验证创建了有效的密钥表(使用 -randkey)。cron 作业脚本调用 kinit,然后调用 scp,然后调用 kdestroy。但是,除非我将 /etc/passwd 中的 /sbin/nologin 更改为有效的 shell(例如 /bin/bash),否则 scp 将不起作用。

问题 1:指定 shell 是否是安全漏洞?
问题 2:这是“正确”的做法吗?

提前致谢

答案1

答案 1:可能是。如果你禁用了任何其他身份验证方法,因此强制使用该密钥,并且你认为该密钥很强大,那么

答案 2:如果没有有效的 shell,scp 将在传输任何文件之前删除会话,这很遗憾。看来 scponly 可以满足您的要求(http://www.sublimation.org/scponly/wiki/index.php/Main_Page)。

答案2

问题 #1 通常不是问题,除非该用户是 root。您还可以使用其他层来限制访问;iptables、tcpwrappers、from=.ssh/authorized_keys 中的选项和 pam_access 等等。

您可以使用 ,而不是使用scp,因为它是一个单独的程序,需要使用 shell 中的选项进行调用sftp。在服务器上,将服务帐户的 shell 设置为 sftp-server:

# RHEL systems
usermod -s /usr/libexec/openssh/sftp-server username
# debian systems
usermod -s /usr/lib/sftp-server username

然后sftp以批处理模式(-b batchfile)调用以进行非交互式使用。

相关内容