Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何不通过ssh传递区域设置_Bash_Ssh - Fatal编程技术网

Bash 如何不通过ssh传递区域设置

Bash 如何不通过ssh传递区域设置,bash,ssh,Bash,Ssh,我有一些ssh的别名,例如: alias buildWork="ssh work '~/build_app'" ssh传递导致错误的变量(如$LC\CTYPE)时出现的问题,如何防止这种情况并使用服务器配置。听起来您的ssh客户端被配置为转发区域设置。您可以通过更改配置来防止这种情况(全局文件通常为/etc/ssh/ssh\u config): 或者,您可以通过在远程计算机上编辑/etc/ssh/sshd\u config来更改服务器的配置(注意sshd\u config中的d): 简言之:

我有一些ssh的别名,例如:

alias buildWork="ssh work '~/build_app'"

ssh传递导致错误的变量(如
$LC\CTYPE
)时出现的问题,如何防止这种情况并使用服务器配置。

听起来您的ssh客户端被配置为转发区域设置。您可以通过更改配置来防止这种情况(全局文件通常为
/etc/ssh/ssh\u config
):

或者,您可以通过在远程计算机上编辑
/etc/ssh/sshd\u config
来更改服务器的配置(注意
sshd\u config
中的d):

简言之:

$ touch ~/.ssh/config
$ ssh -F ~/.ssh/config your_user@your_host
有关详细信息,请参阅

To stop sending Environment Variables via sftp Tested on CENTOS 7 - create file config in ~/xyzuser/.ssh/config - set permission to 600 ~/xyzuser/.ssh/config - Put the following content in the file comment the below lines commented to disable env variables######### - Send locale-related environment variables SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE SendEnv XMODIFIERS Running without the ~/xyzuser/.ssh/config sftp -v xyzuser@destinationhost -------------------truncated output-------- debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: Sending environment. debug1: Sending env LANG = en_US.UTF-8 debug1: Sending subsystem: sftp Running with the ~/xyzuser/.ssh/config sftp -v -F /home/xyzuser/.ssh/config xyzuser@destinationhost ----truncated---------- debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: Sending subsystem: sftp Connected to destinationhost 停止通过sftp发送环境变量 在CENTOS 7上测试 -在~/xyzuser/.ssh/config中创建文件配置 -将权限设置为600~/xyzuser/.ssh/config -将以下内容放入文件中 注释以下注释行以禁用环境变量######### -发送与区域设置相关的环境变量 SendEnv LANG信用证类型信用证数字信用证时间信用证核对信用证货币 发送信用证纸质信用证姓名信用证地址信用证电话 SendEnv LC_标识LC_所有语言 SendEnv XMODIFIERS 在没有~/xyzuser/.ssh/config的情况下运行 sftp-vxyzuser@destinationhost -------------------截断输出-------- debug1:不再请求-sessions@openssh.com debug1:进入交互式会话。 debug1:发送环境。 debug1:发送env LANG=en_US.UTF-8 debug1:发送子系统:sftp 使用~/xyzuser/.ssh/config运行 sftp-v-F/home/xyzuser/.ssh/configxyzuser@destinationhost ----截断的---------- 调试1:通道0:新建[客户端会话] debug1:不再请求-sessions@openssh.com debug1:进入交互式会话。 debug1:发送子系统:sftp 已连接到destinationhost
接受的答案是正确的,但是,如果不想更改配置文件,可以在命令行上覆盖特定的区域设置

LC_TIME="en_US.UTF-8" ssh user@example.com

我遇到了一个问题,我认为ssh传递了区域设置,所以我尝试在客户端站点上禁用它,然后在服务器站点上禁用它(如上所述),但是区域设置在登录后仍在抱怨

结果是目标服务器本身的区域设置很混乱,设置取自
/etc/default/locale


我必须彻底清理它,运行
#dpkg reconforme locales
,解决了这个问题。

正如在其他答案中已经解释的那样,客户端将通过
/etc/ssh/ssh\u config
中的
SendEnv
发送所有指定的环境变量。您还可以使用用户的配置强制
ssh
不发送已定义的变量名

发件人:

可以通过在模式前加-来清除以前设置的SendEnv变量名。默认情况下,不发送任何环境变量

因此,为了防止发送区域设置,您可以将以下内容放入
~/.ssh/config

# comment out / remove the following line
SendEnv LANG LC_*
# comment out / remove the following line
AcceptEnv LANG LC_*
SendEnv -LC_* -LANG*

我没有测试的方法,但是
(unset LC\u CTYPE;ssh…)
可能会工作。这将临时取消设置子shell中的LC_CTYPE(
(…)
),然后运行
ssh…
命令。祝你好运。谢谢你的解释!你真棒!请试着回答这个问题,而不是复制粘贴。那个问题解决了。问题是为什么不采用用户配置而采用全局配置?@crsuarezf采用的是用户配置,但如果不使用
-F
,它也采用全局配置,而不是完全忽略它。从:
中,如果在命令行中提供了配置文件,则系统范围的配置文件(/etc/ssh/ssh\u config)将被忽略
我已经有了一个
~/.ssh/config
文件,因此所有这些操作都是更新该文件上的时间。而无法识别的局部变量仍会传递给主机。至少现在我在
man
页面上找到了一些东西。这似乎是最清晰的答案,但我无法让它发挥作用。以下内容对我来说起到了作用,覆盖了
/etc/ssh/ssh\u config
中的设置:
SetEnv LANG=“”
我终于找到了这是它对我不起作用的原因。他们解决了这个问题,但并没有真正解决问题:这简直是疯了。Debian和Ubuntu等衍生工具,用于以普通用户无法阻止的方式设置
SendEnv
——只有
root
可以改变这一点。显然是一只虫子,到今天为止,我们的Ubuntu18.04系统还没有得到修复(它们运行openssh 7.6p1)。因此,实际的解决办法是升级到一个较新的Debian或基于Debian的版本,然后这个答案就行了。