当我 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_config
和 man 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主机,无法成功连接,报错如下,求大侠赐教!!感谢!!