前言
ssh是Linux系统中常用的远程登陆的命令,有的时候我们通过等远程连接软件使用ssh去登陆远程的服务器的时候,会遇到一些问题。
下面是关于ssh 远程登陆的问题解决方法的总结。(更新中)
常见报错及解决 1.SSH连接时出现 ,如下:
报错如下:
ssh: to host 123.123.123.111 port 22:
通常是由于22端口未打开、ssh服务未启动或防火墙禁止22端口等原因引起的
解决方法:
【1】启动服务,设置防火墙步骤如下:
.进入该服务器(本地登陆)
.查看ssh服务是否启动
sshd
如未启动
start sshd
.查看端口是否打开
-lnput |grep :22
如未打开,再次启动sshd
测试网络的联通性
ping (ping外网)
如果ping不通,就检查dns
如果dns无问题,就说明是网络原因,看服务器的网线是否连接或是否有问题
如果能连接外网,就查看服务器的防火墙规则,并开放ssh服务的22号端口(如防火墙未放行ssh的端口)
-L
[1]直接打开端口:
-I INPUT -p tcp –dport 22 -j
[2]永久打开端口
打开防火墙配置文件:
vim /etc//
在文件内容中追加
-A RH–1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j
保存配置文件后,重启防火墙:
()
()
2.SSH连接时出现Host key
报错如下:
Host key
通常是由于访问使用的公钥与服务器记录的差异引起的
ssh服务会把每个曾经访问过计算机或服务器的公钥( key),记录在~/.ssh/
当下次访问曾经访问过的计算机或服务器时,ssh就会核对公钥,如果和上次记录的不同,会发出警告。
而ssh对主机的的检查是有等级的,根据等级执行不同的策略。(g就是配置等级的参数)
[1]g=no
最不安全的级别,提示最少,应在相对安全的内网测试时使用。(当连接的服务器的公钥在本地不存在,就会自动添加到文件(默认是)中,并且给出警告。
[2]g=ask
默认的级别。如果连接的服务器的公钥和本地的文件中不匹配,就给出提示(Host key ),并拒绝登录。
[3]g=yes
最安全的级别,如果连接的服务器的公钥和本地的文件中的不匹配,就拒绝连接,不会提示详细信息。
解决方法 :
【1】可更改安全选择最低的安全级别。在.ssh/或/etc/ssh/)中配置:
g no
/dev/null
(将设为/dev/null),为了方便使用在中了)
【2】删除对应ip的在相关信息
vim /.ssh/
【3】直接删除文件
rm
3.SSH公私钥正确的情况下免密登录失败
有的时候我们经常会遇到:在服务器上配置ssh公钥后,一段时间可以免密码登录,后来登录时,每次都提示要输入密码。这时我们可以删除,重新把.pub添加到服务器~/.ssh/下。 如果这个办法也不行,我们(首先考虑是权限问题)要查看日志。
/var/log/auth.log日志中报错如下:
sshd[6761]: : bad or modes for /root/.ssh
/var/log/日志中报错如下:
: bad or modes for /root/.ssh
这些日志都告诉了我们/root/.ssh的目录的权限的配置出现了(权限应为700)
解决方法:
【1】更改目录及文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/
4.SSH连接时密码正确,登陆失败,出现 , try again
报错如下:
或
, try again
通常是由于/etc/ssh/的on或参数的配置引起的
补充:
还有特殊一种情况,你要连接的这台服务器的ip地址与你局域网中的某台电脑的ip地址一致,造成冲突。(这种情况,无论怎么改都会失败,会让你怀疑自己。解决方法只能是一方改IP或关闭其中一方,先解决冲突问题)
解决方法:
【1】修改相关配置文件
查看本服务器和电脑的防火墙设置,是否打开ssh服务,22端口(一般都是打开的)
如果服务不是打开的要将服务启动,防火墙开放22端口(配置规则看本文目录第1条中)
编辑文件
vim /etc/ssh/
将on前面的#号去掉
将on 设为yes
重启sshd服务
/etc/init.d/sshd ()
sshd()
【2】修改相关配置文件
基本上与上一个方法相同,但编辑文件的另一个参数
vim /etc/ssh/
将前面的#号去掉
将设为yes
重启sshd服务
/etc/init.d/sshd ()
sshd()
5.SSH连接时出现 , try : read: reset by peer
报错如下:
, try : read: reset by peer
原因是由于所访问的服务器启用了,拒绝接受该ip或网段发起访问的服务,可能是限制了ip或是网段
解决方法:
【1】修改发起访问端的ip或网段
该方法在无法进入被访问端服务器时使用,但可用率不高,因为大多少情况下是对网段进行限制并开放某些IP。
建议联系 系统管理员解除限制或放开该IP或网段
查看本机的ip或网段
ip a
修改一个正在使用的网卡的配置文件
例如:
vim /etc//-/ifcfg-eth0
(重点修改,,,将其修改为新网段的IP)
TYPE=
=none
=yes
NAME=eth0
=eth0
=yes
=10.10.10.10
=255.255.254.0
=10.10.10.254
DNS1=.8.8.8.8
重启网卡
()
()
【2】进入被访问端解除限制或放开IP
进入/etc/hosts.allow中进行修改
(123.123.123.123此处代表发起访问端的IP)
vim /etc/hosts.allow
追加
sshd:123.123.123.123:allow
或仅注释一行
#sshd:123.123.123.123:deny
或注释所有规则,并添加
sshd:all:allow
发表回复