Can I forward env variables over ssh?

后端 未结 3 688
执笔经年
执笔经年 2020-12-01 07:15

I work with several different servers, and it would be useful to be able to set some environment variables such that they are active on all of them when I SSH in. The proble

相关标签:
3条回答
  • 2020-12-01 07:59

    Something like:

    ssh user@host bash -c "set -e; $(env); . thescript.sh"

    ...might work (untested)

    Bit of a hack but if you cannot change the server config for some reason it might work.

    0 讨论(0)
  • 2020-12-01 08:02

    You can, but it requires changing the server configuration.

    Read the entries for AcceptEnv in sshd_config(5) and SendEnv in ssh_config(5).

    update:

    You can also pass them on the command line:

    ssh foo@host "FOO=foo BAR=bar doz"
    

    Regarding security, note than anybody with access to the remote machine will be able to see the environment variables passed to any running process.

    If you want to keep that information secret it is better to pass it through stdin:

    cat secret_info | ssh foo@host remote_program
    
    0 讨论(0)
  • 2020-12-01 08:12

    You can't do it automatically (except for $DISPLAY which you can forward with -X along with your Xauth info so remote programs can actually connect to your display) but you can use a script with a "here document":

    ssh ... <<EOF
    export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH"
    runRemoteCommand
    EOF
    

    The unescaped variables will be expanded locally and the result transmitted to the remote side. So the PATH will be set with the remote value of $HOME.

    THIS IS A SECURITY RISK Don't transmit sensitive information like passwords this way because anyone can see environment variables of every process on the same computer.

    0 讨论(0)
提交回复
热议问题