linux 在ssh中取消设置SendEnv选项

vmjh9lq9  于 2023-04-29  发布在  Linux
关注(0)|答案(3)|浏览(182)

相应地,ssh 手册页 -o 允许设置给定ssh客户端选项的内容。我想取消设置SendEnv(或将其设置为空),以避免在服务器端设置区域设置。
我通过注解ssh_config文件中的SendEnv行获得了预期的效果。但是,对于我的应用程序来说,这不是一个好的选择。
如何在运行ssh命令时实现这一点?我试过ssh -o SendEnv='' server没有成功。

7cwmlq89

7cwmlq891#

在命令行上不可能做到这一点。SendEnv选项不会覆盖,而是附加到现有值。
但您可以创建一个不同的配置文件,它将没有这些选项,并使用-F选项,这将阻止使用全局配置文件:

ssh -F /my/specific_ssh_config server
oipij1gg

oipij1gg2#

有点晚了,但也许有人可以从我的回答中获益。根据'man ssh_config',可以清除SendEnv变量:
可以通过在模式前面加上-来清除以前设置的SendEnv变量名。
所以你基本上应该能够使用你的构造

-o SendEnv=''

但是,不是将括号留空,而是将要覆盖的变量放在括号中,但在每个变量前面加上一个破折号。
或者在用户自己的ssh配置中指定相同的参数(通常是~/。ssh/config)。如果我正确理解文档的话,也应该覆盖它。

flseospp

flseospp3#

把前面的两个答案放在一起,就可以了:

echo "Include config SendEnv -*" > /tmp/foo && ssh -F /tmp/foo server

(If任何人都可以缩短它,请编辑。)
SendEnv -*不能有效地用作-o的参数,因为命令行SSH选项是先应用的,用户/系统配置是之后才应用的。因此,-o SendEnv -*通常没有什么可覆盖的,我们在基于用户的~/.ssh/config文件的临时配置文件中提供覆盖。
或者,如果您不介意删除所有用户/系统SSH配置(包括现有的SendEnv声明),那么

ssh -F /dev/null server

工作也很好。

相关问题