如何在 sftp 连接上执行脚本?

如何在 sftp 连接上执行脚本?

我在我的机器上运行 ssh 服务器,并使用 internal-sftp 和 ChrootDirectory 限制某些用户只能访问 sftp。我需要一种在 chroot 用户之前执行脚本的方法。实际上,目标是在客户端连接上安装加密文件系统并在关闭时卸载它。提前谢谢。

答案1

如果您不想破解 openssh 代码,则必须使用外部 sftp 服务器。如果您这样做,只需在其周围放置一个包装器即可。例如:在sshd_config

Subsystem       sftp    /usr/local/bin/sftp-server

/usr/local/bin/sftp-server

#!/bin/sh
mount_special_fs
chroot /my/secret/stuff /usr/libexec/openssh/sftp-server
umount_special_fs

可能可以放一个包装器sshd并从中启动包装器,但不鼓励从中inetd启动,因为启动速度太慢。sshdinted

答案2

您还可以使用 pam_script,这是一个 pam 模块,用于从 pam 身份验证模块执行脚本。您可以将其添加到 pam sshd 配置中。URL:http://linux.die.net/man/5/pam_script

相关内容