为什么有两种方法可以用OpenSSH设置SFTP,以及何时使用? 他们之间有什么区别?
我的意思是第一个使用OpenSSH的lib,第二个使用“使用内部”,所以它也是OpenSSH?
Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
根据sshd_config(5)
手册页 , internal-sftp
是
与
ChrootDirectory
使用时,不需要支持文件的进程内sftp服务器。
internal-sftp
比独立的sftp-server
二进制文件晚了很多,但现在是默认的。 它支持sftp-server
所做的一切,并具有上述优势。
另一个优点是性能,因为没有必要为SFTP运行新的进程。
我相信没有理由使用sftp-server
进行新的安装。
对于依赖它的安装, sftp-server
仍保持向后兼容性。
例如,如果pipe理员依靠loginshellconfiguration来防止某些用户login。切换到internal-sftp
将绕过限制,因为不再涉及loginshell。
使用sftp-server
二进制文件(作为一个独立的进程),你也可以使用一些黑客,比如在sudo
下运行SFTP 。
存在可与OpenSSH一起使用的替代SFTP实现:
您可以将authorized_keylocking到外部sftp服务器。
command =“/ usr / libexec / openssh / sftp-server”ssh-rsa AAAA ... == [email protected]
当你这样做,你的用户可以sftp,但不能scp或ssh:
$ sftp主机:/ etc / group / tmp 连接到主机... 将/ etc / group提取到/ tmp / group / etc / group 100%870 0.9KB / s 00:00
试图做任何事情只会挂起:
$ scp主机:/ etc / group / tmp 被信号2杀死 $ ssh主机正常运行 被信号2杀死
唉,除非修改sshd_config,否则没有简单的方法可以将某个键locking到chroot。 这对用户来说是非常酷的,无需系统pipe理员的干预。