我需要一个cron作业来使用scp和kerberos身份验证在服务器之间传输文件。作业的系统用户在这两台机器上都在/etc/passwd中,并且已经为kerberos创建了一个有效的keytab (带有-randkey)。cron作业脚本调用kinit,然后调用scp,然后调用then。但是,除非我将/sbin/nologin /etc/passwd更改为有效的shell (例如/bin/bash ),否则scp将无法工作。
问题1:这是指定shell的安全漏洞吗?
问题2:这是一种“正确”的方法吗?
提前感谢
发布于 2011-05-13 18:03:41
答1:可能是。如果禁用任何其他身份验证方法,并因此强制使用该密钥,并且您认为该密钥是强的,那么
答2:没有有效的shell,scp将在传输任何文件之前删除会话,这是一个遗憾。似乎scponly可以做您想做的事情(http://www.sublimation.org/scponly/wiki/index.php/Main_页面)。
发布于 2011-05-13 19:33:18
问题1通常不是问题,除非用户是根用户。您还可以使用其他层来限制访问;iptables、tcpwrappers、..ssh/ from=
_key中的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批处理文件)进行非交互使用。
https://serverfault.com/questions/269421
复制相似问题