如何从 ~/.ssh/config 禁用在 ssh_config 中设置的 SendEnv 变量

ako*_*nov 35 ssh debian openssh redhat-enterprise-linux

我在任何地方都找不到,所以我想知道我是不是唯一一个遇到此类问题的人。

默认情况下,Red Hat 和 Debian 上的 ssh 至少有一个 ssh_config 和 SendEnv 选项,用于在远程会话中传递 LC* 和 LANG 变量。如果不是 root 来更改 /etc/ssh/ssh_config,他如何禁用该行为?SendEnv 选项似乎正在累积,我看不到任何重置它的方法。

为了避免被问到,我需要避免将我的语言环境传递给测试机器,以避免对依赖语言环境作为机器默认设置的脚本和程序产生副作用。

Ans*_*ers 20

不是唯一的。如记录在ssh_config(5)您不能取消设置SendEnv,因为

多个环境变量可能 [...] 分布在多个 SendEnv 指令中。

但是,如果您在测试机器上拥有 root 用户,您可以更改AcceptEnv为不接受客户端发送的变量。

  • 废话,我看到命令行上只有 -F 可以提供帮助,但它真的不方便使用。见 https://bugzilla.mindrot.org/show_bug.cgi?id=1285 (5认同)

Fer*_*eia 7

这不能完成,~/.ssh/config因为SendEnv不能被覆盖。

使用别名不适用于调用 ssh 的脚本。

一种替代方法是导出函数。例如~/.bashrc

function ssh() {
    LANG="en_US.UTF-8" \
    LC_ADDRESS="$LANG" \
    LC_IDENTIFICATION="$LANG" \
    LC_MEASUREMENT="$LANG" \
    LC_MONETARY="$LANG" \
    LC_NAME="$LANG" \
    LC_NUMERIC="$LANG" \
    LC_PAPER="$LANG" \
    LC_TELEPHONE="$LANG" \
    LC_TIME="$LANG" \
    LC_ALL="$LANG" \
    /usr/bin/ssh $@
}
export -f ssh
Run Code Online (Sandbox Code Playgroud)