我已经阅读了许多关于使用PermitUserEnvironment和文件~/.ssh/environment以便将envvariables传递给ssh shell的文章。 正式的sshd文档和其他一些资源暗示了这样做的一些安全风险。
启用环境处理可使用户能够绕过使用诸如LD_PRELOAD之类的机制的一些configuration中的访问限制。
激活PermitUserEnvironment的可能的安全问题是什么? 我期待在这些环境variables中保存数据库连接的细节,这是可取的吗?
首先,如果您不想尝试用户访问限制的任何事情 – 也就是说,如果您提供交互式shell访问 – 允许使用.ssh/environment文件可能没有额外的安全风险,因为用户可以使用该文件完成的任何事情,他们也可以在他们的shell中交互式地完成。
启用环境处理可使用户能够绕过使用诸如LD_PRELOAD之类的机制的一些configuration中的访问限制。
如果您使用SSH强制命令来限制人们可以通过ssh执行的操作(例如,如果限制人们只使用sftp或scp ),那么允许某人设置环境variables(如LD_PRELOAD (甚至可能是PATH ))将允许他们通过用自己的代码replace基本的库调用来劫持你的限制。 另一方面,如果您代表您的用户创build.ssh/environment ,而且他们无法进行pipe理,那么您的风险相对较小。
不知道更多关于您的特定用例,很难提供明确的答案。