authorized_keys Environment Variables Not Setting Environment Variables

I have created the file ~/.ssh/environment in there I put:

LEVEL=0

When I run a script over ssh to get the environment variable level it returns 0 like it should.

In the authorized_keys file I have several keys and am trying to change the value on a few so when I run a script on the other side it can modify how it process information. I am adding the following before the normal key:

command="/path/to/script" environment="LEVEL=1"

If I don't have the environment segment the script is executed fine, but if I have the environment part set then the script won't run.

I am not exactly sure what I am doing wrong. Am I even approaching this correctly?

essentially I have 4 different keys and in some cases I want people to have a level 1 or 2 with the default of 0, but I want to set who has the level and have it only set while they are logged in to execute their command.

I think I am barely understanding how it is supposed to work so my understanding could be completely wrong on how this should work.

Any ideas?


Solution 1:

Try this:

command="export LEVEL=1; /path/to/script"

Solution 2:

First guess is that your syntax is slightly off.

I've never personally used the "environment" argument before, but from having to write custom authorized_keys entries before, I believe that optional arguments at the beginning of an authorized_keys entry require commas between each argument, not spaces.

Try:

command="path/to/script",environment="LEVEL=1" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArestofkeyhere comment_stuff

Hope this helps.

Solution 3:

There option PermitUserEnvironment in config file /etc/ssh/sshd_config has default value to no

So to enable processing file ~/.ssh/environment or/and environment= options in ~/.ssh/authorized_keys set above variable in yes