是否有可能强制SFTP而不是允许SCP后备?

我有一个openssh OpenSSH_4.3p2的红帽5.4服务器,并试图在服务器上设置scp / sftp日志,但我遇到了一些问题。

我跟着这个其他职位的方向。 如果用户select使用pscp或者cyberduck,filezilla,winscp等SFTP客户端来传输文件,这些工作将非常有效。在这种情况下,我能够知道被导航的目录树。

但是,如果用户select使用rsync(以scp作为协议)或者显式调用scp命令,则唯一logging的是login/注销事件。 导航传输文件的实际树不会显示在日志path中。

有没有办法禁用scp,同时仍然允许sftp? 或者有没有办法强制scp命令行为sftp?

也许这个问题在最近的openssh端口中不存在。 但是,由于红帽不会为我的5.4操作系统版本发布进一步的更新(我们不想升级服务器),所以我坚持我所拥有的。

有什么build议么 ?

我不确定loggingSCP 。 我看了一下这个。 所有的scp都是以另一种方式在另一端调用scpsshd应该能够logging它的执行情况。 从代码看来, sshd需要LogLevel=DEBUG才能写入exec,但是在DEBUG或更高级别(6.1p1)中,这不是输出。 不幸的是,一旦sshd执行了一些东西,正在运行的二进制文件可以在下面做任何事情,所以如果二进制文件也执行了日志logging,这将会有所帮助 在scp没有真正的日志logging,所以需要一些补丁。

这立即引起我的大脑写一个封装scp的黑客至less得到一些信息。

 mv /usr/bin/scp /usr/bin/scp.ori; touch /usr/bin/scp; chmod 755 /usr/bin/scp; 

然后将以下内容放在/usr/bin/scp

 #!/bin/sh logger -i -p auth.info "scp ran with [$*]" /usr/bin/scp.ori "$@" 

脚本会被释放,但它是有点狡猾。 您只能真正看到scp命令的一端,这可能有点简单(例如scp -r user@host:/home/user/ ./-r -f /home/matt/

还值得注意的是,如果人们有shell访问权限,他们可以复制任何他们想要的而不使用scp或sftp。

<结束编辑>

可以强制Subsytemlogin。 以下是针对该组成员的情况,我只希望能够sftp到特定的chroot位置,以便他们的用户拥有/usr/sbin/nologin的shell。 我不认为你需要在sshdconfiguration比ForceCommand多。

 Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /pub/user/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp PasswordAuthentication yes 

希望你可以附加你的日志logging,你离开了。