使用ssh命令连接远程服务器报错-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)

使用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
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 ~]# 
#可以看到,现在已经不会在报错了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勿忘VS初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值