使用 cygwin 将 Windows 上的 ssh SendEnv 传输到 Linux 服务器

使用 cygwin 将 Windows 上的 ssh SendEnv 传输到 Linux 服务器

我正在从 Windows cygwin 向 Open SU​​SE Linux 服务器执行 ssh。我试图通过 ssh 命令发送我的一个本地环境变量,以便在登录后立即加载一些特定的 .bashrc 文件。以下是我尝试过的方法。

Windows Machine有这个环境变量

IDENTITY=samiron
echo %IDENTITY%
   samiron

在Linux机器上我有

vim /etc/ssh/sshd_config
AcceptEnv IDENTITY

/home/user/.bashrc曾经写过类似的东西

export ME=$IDENTITY

我的计划是拥有一个类似的文件.bashrc.samironsource ~/.bashrc.$ME.bashrc文件中执行。

但是,我正在像下面这样执行 ssh,并期望变量$ME包含"samiron"

ssh -o SendEnv=IDENTITY [email protected]

但登录后

user@server:~> echo $ME

什么都没显示。有人能告诉我我做错了什么吗?

答案1

必须满足这两个条件才能使其按预期工作:

  1. 您的 ssh 服务器必须配置为接受来自本地客户端环境的变量转发。由于允许此类行为可能存在安全风险,因此通常默认禁用它。您可以通过指定“接受环境”在你的 ssh 服务器配置中设置指令。因此,将类似下面的内容放入/etc/ssh/sshd_config文件和重新加载ssh 服务器服务(变量名可以包含通配符,您可以指定多个以空格分隔的变量,详细信息sshd_config 命令

    AcceptEnv 变量名

  2. 此功能适用于 ssh 协议版本 2仅。如果没有更改,几乎所有现代 Linux 发行版都默认满足此要求(“协议”指示)。

答案2

哦,我错过了重新启动 sshd 服务器的部分。

sudo /etc/init.d/sshd restart

解决了我的问题

相关内容