当我 ssh 连接到 vagrant centos 6 时,我收到警告 setlocale LC_CTYPE

Posted

技术标签:

【中文标题】当我 ssh 连接到 vagrant centos 6 时,我收到警告 setlocale LC_CTYPE【英文标题】:I got warning setlocale LC_CTYPE when I ssh connect to vagrant centos 6 【发布时间】:2016-06-07 21:23:59 【问题描述】:

我是 vagrant 的初学者。我尝试使用 vagrant 在我的计算机上创建一个虚拟机(cent os 6)。当我运行 vagrant ssh 时,它会打印以下警告:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

当我运行locale 时,我得到了这个:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

我搜索了一个小时,但仍然无法解决。

【问题讨论】:

Locale Error in centos的可能重复 【参考方案1】:

对于那些在 MacOS 中遇到此错误的人: 打开 /etc/ssh/ssh_config 文件(在您喜欢的任何编辑器中,我在示例中使用了 vi 编辑器)

sudo vi /etc/ssh/ssh_config
(enter sudo password)

在这个文件中,注释掉下面的行:

SendEnv LANG LC_*

(使用#表示评论:#SendEnv LANG LC_*

关闭文件。关闭并重新打开终端并再次尝试 ssh 命令。

要详细了解该问题,您可以查看此技术博客: https://www.cyberciti.biz/faq/os-x-terminal-bash-warning-setlocale-lc_ctype-cannot-change-locale/

【讨论】:

【参考方案2】:

这可能是由您的终端设置引起的。

对于 iTerm2,取消选中此设置:

Profiles -> Terminal -> "Set locale variables automatically".

上下文:如果您在无法修改区域设置的共享节点上工作,警告可能是由于您的终端尝试(但失败)更改区域设置。

【讨论】:

【参考方案3】:

您可以将LC_ALL 设置为C,例如

export LC_ALL=C

或连接到您的虚拟机之前的前缀:

LC_ALL=C ssh vagrant@localhost

注意:您也可以考虑为您的 SSH 配置 (man ssh_config) 设置 SetEnv,如下所述。


要使其永久化,您可以在 ~/.ssh/config 中添加以下规则:

Host *
  SetEnv LC_ALL=C

假设您的服务器在/etc/ssh/sshd_config 中有以下行:

AcceptEnv LANG LC_*

还要检查:man ssh_configman sshd_config

【讨论】:

【参考方案4】:

对于 CentOS 或 Amazon AMI Linux,将这些行添加到 /etc/environment(如果不存在,则创建它):

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

要通过 SSH 控制台编辑此文件,请尝试

sudo nano /etc/environment

编辑

对于 Debian 相关的发行版(Ubuntu 等),您应该检查 /etc/default/locale 是否为空。这是在 dpkg-reconfigure locales 中选择 None 的结果,如果用户通过 SSH 访问(请参阅 Debian Wiki),则建议这样做。

/etc/environment 是deprecated since Debian Lenny (5.0)。

【讨论】:

/etc/default/locale 似乎是这种配置更合理的地方。 @FranklinYu 似乎 /etc/environment 仅在 Debian 中被弃用。更新了我的答案。 在 Fedora 中我会添加:LC_CTYPE="en_US.UTF-8"/etc/locale.conf【参考方案5】:

就我而言,在 Slackware64 14.1 上出现错误:

-bash: warning: setlocale: LC_ALL: cannot change locale (en_DK.UTF-8)

原来是缺少 glibc 包。

安装包:

glibc-2.17-x86_64-11_slack14.1
glibc-i18n-2.17-x86_64-11_slack14.1

解决了这个问题。

我的 /etc/profile.d/lang.sh 包含:

export LANG=en_DK.UTF-8
export LANGUAGE=en_DK.UTF-8
export LC_ALL=en_DK.UTF-8

export LC_COLLATE=C

享受吧。

【讨论】:

我遇到了同样的问题,但在 android/Termux 上。 github.com/termux/termux-packages/issues/3009【参考方案6】:

请尝试下一步:

localedef -i en_US -f UTF-8 en_US.UTF-8

【讨论】:

将此作为对您之前原始答案的编辑,或作为对此的评论。【参考方案7】:

在 bashrc 的根目录下添加以下内容:

vi /root/.bashrc

export LC_ALL=en_US.UTF-8

export LANG=en_US.UTF-8

然后重启你的系统。

【讨论】:

这只是为root用户设置环境变量,当你看到警告信息时,可能不是你登录的用户 这适用于我,在我的本地用户中,因为我没有 root 访问权限,不需要重新启动,只需注销,然后登录。谢谢!

以上是关于当我 ssh 连接到 vagrant centos 6 时,我收到警告 setlocale LC_CTYPE的主要内容,如果未能解决你的问题,请参考以下文章

第一次使用 `homestead ssh` 时连接到 vagrant 是不是有默认密码?

无法通过 ssh 连接到 Github,无法访问 .ssh.config

使用 SSH 密钥连接到远程 Centos 服务器

ssh连接到centos主机,无法成功连接,报错如下,求大侠赐教!!感谢!!

Codeigniter 连接到使用 centOS 和 mariadb 作为数据库管理的 SSH 服务器的可能设置是啥?

如何将自己的公钥添加到 Vagrant VM?