authorized_keys 环境变量未设置环境变量

Bud*_*sey 6 ssh environment-variables ssh-keys

我在那里创建了文件 ~/.ssh/environment :

LEVEL=0
Run Code Online (Sandbox Code Playgroud)

当我通过 ssh 运行脚本以获取环境变量级别时,它会像它应该的那样返回 0。

在authorized_keys 文件中,我有几个键,并试图更改其中几个键的值,因此当我在另一端运行脚本时,它可以修改它处理信息的方式。我在普通键之前添加以下内容:

command="/path/to/script" environment="LEVEL=1"
Run Code Online (Sandbox Code Playgroud)

如果我没有环境段,则脚本执行得很好,但是如果我设置了环境部分,则脚本将无法运行。

我不确定我做错了什么。我什至正确地接近这个吗?

基本上我有 4 个不同的键,在某些情况下,我希望人们拥有 1 级或 2 级,默认值为 0,但我想设置谁拥有该级别,并且仅在他们登录执行他们的命令时才设置它。

我想我几乎不明白它应该如何工作,所以我对它应该如何工作的理解可能完全错误。

有任何想法吗?

小智 7

配置文件/etc/ssh/sshd_config中的PermitUserEnvironment选项默认值为no

因此,要在yes中启用上述变量中​​设置的文件~/.ssh/environment或/和environment=选项的处理~/.ssh/authorized_keys


top*_*gon 5

尝试这个:

command="export LEVEL=1; /path/to/script"
Run Code Online (Sandbox Code Playgroud)


pho*_*zed 5

第一个猜测是你的语法略有偏差。

我以前从未亲自使用过“环境”参数,但由于之前必须编写自定义的authorized_keys条目,我相信authorized_keys条目开头的可选参数需要在每个参数之间使用逗号,而不是空格。

尝试:

command="path/to/script",environment="LEVEL=1" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArestofkeyhere comment_stuff
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • 为此,在服务器端,管理员必须将“PermitUserEnvironment yes”添加到“sshd_config”中。将环境变量设置为强制命令的一部分,例如在[另一个答案](http://serverfault.com/a/256108/98062)中,无需更改服务器配置即可工作。 (3认同)