专用服务器设备ssh
仅接受一个登录帐户的登录,该登录帐户
- 仅使用公钥进行身份验证,
- 并执行配置有 的命令
ForceCommand
。
登录帐户可以由多个身份使用,每个身份都在 中注册了其公钥authorized_keys
。
我想将控制令牌传递到其中一些公钥的命令中。
我可以使用环境变量来实现此目的,并environment=
在authorized_keys
.为此,我需要启用PermitUserEnvironment
哪个全局选项in sshd_config
(块中不支持Match
)。
通过启用PermitUserEnvironment
,客户端还可以传递环境变量。但是,我认为这是安全的,因为:
AcceptEnv
客户端只能传递服务器上设置允许的变量。- 设置的变量
authorized_keys
优先于从客户端传递的变量。 - 唯一有效的登录会启动强制命令,因此无法访问可以调整环境的交互式 shell。
因此我相信
- 鉴于我不会使用
AcceptEnv
,客户端应该不可能传递环境变量。 - 如果我为所有公钥上的变量设置一个值,那么客户端就不可能覆盖它,即使(错误地)允许
AcceptEnv
。 - 由于没有 shell 访问权限,因此没有其他方法可以修改环境。
这是 的安全使用吗PermitUserEnvironment
,还是还有我上面没有考虑到的其他风险?