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

我需要一个cron作业来使用scp和kerberosvalidation跨服务器传输文件。 作业的系统用户在两台机器上的/ etc / passwd中,并且已经为Kerberosauthentication创build了一个有效的keytab(带有-randkey)。 cron作业脚本调用kinit,然后是scp,然后是kdestroy。 但是,除非将/ etc / passwd中的/ sbin / nologin更改为有效的shell(例如/ bin / bash),否则scp将无法工作。

问题1:这是一个安全漏洞来指定一个shell?
问题2:这是做到这一点的“正确”方法吗?

提前致谢

答案1:可能是。 如果你要禁用任何其他的authentication方法,并因此强制使用密钥,而你相信这个密钥是强大的,那么一个

回答2:没有有效的shell scp会传输任何文件之前删除会话,这是一个耻辱。 似乎scponly做你想要的( http://www.sublimation.org/scponly/wiki/index.php/Main_Page )。

问题#1通常不是问题,除非该用户是root用户。 您还可以使用其他图层来限制访问权限; iptables,tcpwrappers,.ssh / authorized_keys中的from=选项,以及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 

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