相应地,ssh 手册页 -o 允许设置给定ssh客户端选项的内容。我想取消设置SendEnv(或将其设置为空),以避免在服务器端设置区域设置。我通过注解ssh_config文件中的SendEnv行获得了预期的效果。但是,对于我的应用程序来说,这不是一个好的选择。如何在运行ssh命令时实现这一点?我试过ssh -o SendEnv='' server没有成功。
ssh -o SendEnv='' server
7cwmlq891#
在命令行上不可能做到这一点。SendEnv选项不会覆盖,而是附加到现有值。但您可以创建一个不同的配置文件,它将没有这些选项,并使用-F选项,这将阻止使用全局配置文件:
SendEnv
-F
ssh -F /my/specific_ssh_config server
oipij1gg2#
有点晚了,但也许有人可以从我的回答中获益。根据'man ssh_config',可以清除SendEnv变量:可以通过在模式前面加上-来清除以前设置的SendEnv变量名。所以你基本上应该能够使用你的构造
-o SendEnv=''
但是,不是将括号留空,而是将要覆盖的变量放在括号中,但在每个变量前面加上一个破折号。或者在用户自己的ssh配置中指定相同的参数(通常是~/。ssh/config)。如果我正确理解文档的话,也应该覆盖它。
flseospp3#
把前面的两个答案放在一起,就可以了:
echo "Include config SendEnv -*" > /tmp/foo && ssh -F /tmp/foo server
(If任何人都可以缩短它,请编辑。)SendEnv -*不能有效地用作-o的参数,因为命令行SSH选项是先应用的,用户/系统配置是之后才应用的。因此,-o SendEnv -*通常没有什么可覆盖的,我们在基于用户的~/.ssh/config文件的临时配置文件中提供覆盖。或者,如果您不介意删除所有用户/系统SSH配置(包括现有的SendEnv声明),那么
SendEnv -*
-o
-o SendEnv -*
~/.ssh/config
ssh -F /dev/null server
工作也很好。
3条答案
按热度按时间7cwmlq891#
在命令行上不可能做到这一点。
SendEnv
选项不会覆盖,而是附加到现有值。但您可以创建一个不同的配置文件,它将没有这些选项,并使用
-F
选项,这将阻止使用全局配置文件:oipij1gg2#
有点晚了,但也许有人可以从我的回答中获益。根据'man ssh_config',可以清除SendEnv变量:
可以通过在模式前面加上-来清除以前设置的SendEnv变量名。
所以你基本上应该能够使用你的构造
但是,不是将括号留空,而是将要覆盖的变量放在括号中,但在每个变量前面加上一个破折号。
或者在用户自己的ssh配置中指定相同的参数(通常是~/。ssh/config)。如果我正确理解文档的话,也应该覆盖它。
flseospp3#
把前面的两个答案放在一起,就可以了:
(If任何人都可以缩短它,请编辑。)
SendEnv -*
不能有效地用作-o
的参数,因为命令行SSH选项是先应用的,用户/系统配置是之后才应用的。因此,-o SendEnv -*
通常没有什么可覆盖的,我们在基于用户的~/.ssh/config
文件的临时配置文件中提供覆盖。或者,如果您不介意删除所有用户/系统SSH配置(包括现有的
SendEnv
声明),那么工作也很好。