我有一些ssh的别名,例如:
alias buildWork="ssh work '~/build_app'"
问题是ssh传递了一些导致错误的$LC_CTYPE
变量,如何防止它并使用服务器配置。
答案 0 :(得分:78)
听起来您的SSH客户端已配置为转发语言环境设置。您可以通过更改配置来阻止此操作(全局文件通常为/etc/ssh/ssh_config
):
# comment out / remove the following line
SendEnv LANG LC_*
或者,您可以通过修改远程计算机上的/etc/ssh/sshd_config
来更改服务器的配置(请注意sshd_config
中的 d ):
# comment out / remove the following line
AcceptEnv LANG LC_*
答案 1 :(得分:5)
正如其他答案中已经解释的那样,客户端将发送通过SendEnv
中的/etc/ssh/ssh_config
指定的所有环境变量。您还可以使用用户的配置强制ssh
不发送已经定义的变量名。
可以通过在模式前面加上-来清除先前设置的SendEnv变量名。默认设置为不发送任何环境变量。
因此,为防止发送您的语言环境,您可以在~/.ssh/config
中输入以下内容:
SendEnv -LC_* -LANG*
答案 2 :(得分:4)
答案 3 :(得分:0)
接受的答案是正确的,但是,如果您不想更改配置文件,则可以在命令行上覆盖特定的区域设置
LC_TIME="en_US.UTF-8" ssh user@example.com
答案 4 :(得分:0)
我遇到了归因于ssh传递语言环境设置的问题,因此我尝试在客户端站点上禁用它,然后在服务器站点上也禁用了它(如上所述),并且登录后语言环境仍然在抱怨。 / p>
原来是目标服务器本身上的混乱区域设置,该位置的设置来自/etc/default/locale
我必须彻底清理它,运行# dpkg-reconfigure locales
来解决问题。
答案 5 :(得分:-3)
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