我在我的机器上运行 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
启动,因为启动速度太慢。sshd
inted
答案2
您还可以使用 pam_script,这是一个 pam 模块,用于从 pam 身份验证模块执行脚本。您可以将其添加到 pam sshd 配置中。URL:http://linux.die.net/man/5/pam_script