使用ssh命令连接远程服务器出现如下报错提示:

[root@localhost opc]# ssh 192.168.10.3
Last login: Mon Aug 24 17:30:59 2020 from 192.168.10.74
-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)

本地化是指不同地区用户在键盘上输入不同语言的字符集。例如 en_US 表示美国英语字符集,因此只有正确设置了服务器的字符集,服务器才能理解用户的输入字符。

出现以上问题是因为服务器无法理解 C.UTF-8 字符集,因此首先在服务器上要有C.UTF-8字符集才行,下面来分别看下两台服务器的字符集,如下所示:

A服务器:

[root@localhost ~]# locale -a
C.UTF-8
POSIX
en_US.utf8
[root@localhost ~]# locale
LANG=C.UTF-8
LANGUAGE=C.UTF-8
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=C.UTF-8

B服务器(192.168.10.3):

[root@server ~]# locale -a | grep "C.UTF-8"
[root@server ~]# locale -a | grep "en_US.utf8"
en_US.utf8

由此可以看出本地服务器上的默认字符集为C.UTF-8,而我们需要登录的远程服务器上却没有C.UTF-8字符集,所以出现报错。那么解决办法有两个,一是在远程服务器上安装C.UTF-8字符集;二是切换本地服务器的默认字符集为en_US.utf8,因为在远程服务器上是有en_US.utf8字符集的。

下面我们使用第二种方法进行设置:

[root@localhost ~]# vim /etc/profile.d/locale.conf
export LANG=en_US.utf8
export LC_ALL=en_US.utf8
[root@localhost ~]# source /etc/profile.d/locale.conf

然后重新登录远程服务器,命令如下:

[root@localhost ~]# ssh 192.168.10.3
Last login: Mon Aug 24 18:42:07 2020 from 192.168.10.74
[root@server ~]# 
#可以看到,现在已经不会在报错了
                    使用ssh命令连接远程服务器出现如下报错提示:[root@localhost opc]# ssh 192.168.10.3Last login: Mon Aug 24 17:30:59 2020 from 192.168.10.74-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)/bin/sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)本地
					
高效解决ubuntu中-bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)问题
centos7centos7,连接时出现-bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.utf-8)/bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.utf-8)并且运行日志中文变问号 确保 在列表中。 这个命令会安装中文语言包和其他相关的语言支持组件。
# set default language environment RUN locale-gen en_US.UTF-8 \ && dpkg-reconfigure locales ENV LC_ALL=en_US.UTF-8 ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US.UTF-8OR: sudo loca... 百度搜索的解决方法大都是修改locale.sh以及environment.sh的配置文件,把配置文件都修改了之后发现还是没有解决。【亲测无效】 试了好几天之后,发现是glic版本的问题,升级到2.17版本的就好啦。下面是glic升级步骤 1.查看glibc的版本:strings /lib64/libc.so.6 |grep GLIBC_ 我的当前最高版本是2.16版本 2.下载2.17版本,并安装 执行gnome-system-monitor /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) No protocol specified Unable to init server: Could not connect: Connection refused (gnome-system-monitor:19721): Gtk-WARNING **: 09:59:53.872: cannot -bash: 警告:setlocale: LC_ALL: 无法改变区域选项 (UTF-8): 没有那个文件或目录 -bash: 警告:setlocale: LC_ALL: 无法改变区域选项 (UTF-8): 没有那个文件或目录 发现不知道谁在/etc/profile的最后一行加入下面的设置,删除即可 export LC_ALL="UTF-8"
安装完Cygwin之后打开就出现了warning: setlocale: LC_ALL: cannot change locale (en.US_UTF-16)的错误提示 后来经过查找,像这种问题,多半是这几个etc下的启动脚本里设置了LC_ALL的变量,因为没有找到后面的UTF-16配置文件,所以出错,但是我们不知道到底是哪个文件出了问题,况且,cygwin里面和Ubuntu等环境也有些不统一,所以只能一个个去看看了吧。 etc/profile, etc/profile.d/xxx.sh, 由于语言的一些问题,ubuntu的bash会报warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8),这在我安装impala时,导致了启动失败 vim /etc/profile 在最后一行加上 export LC_ALL=C;unset LANGUAGE 然后使它生效 source /etc/profile 使用ssh远程登陆 IDC机房服务器,发现老是出现如下告警信息: -bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory -bash: warning: setlocale: LC_COLLATE: cannot change locale (en_U...