如何通过ssh传递语言环境

时间:2015-04-13 15:36:06

标签: bash ssh

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

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

问题是ssh传递了一些导致错误的$LC_CTYPE变量,如何防止它并使用服务器配置。

6 个答案:

答案 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不发送已经定义的变量名。

来自OpenSSH man page

可以通过在模式前面加上-来清除先前设置的SendEnv变量名。默认设置为不发送任何环境变量。

因此,为防止发送您的语言环境,您可以在~/.ssh/config中输入以下内容:

SendEnv -LC_* -LANG*

答案 2 :(得分:4)

简而言之:

$ touch ~/.ssh/config
$ ssh -F ~/.ssh/config your_user@your_host

有关详细信息,请参阅this answer

答案 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