centos ssh无法连接7 ssh连接不上

重庆域名服务热线 :023-22
阿里云主机ECS
&&>>&&&&&&&&&&&&
ECS Centos7系统ssh服务启动失败,导致ssh远程连接不上的分析解决
  Linux服务器的ssh服务无法正常启动,导致ssh远程连接不上服务器。  问题现象:Centos7系统的服务器,ping服务器能通,ssh连接不上,Telnet测试ssh的22端口不通,关闭服务器的防火墙也不行。  问题分析与解决:  在控制台通过VNC管理终端登陆服务器,检查服务器的防火墙确实已经关闭,用命令netstat -nltp 查看服务器的22端口没有监听,ssh服务没有启动。执行命令systemctl start sshd.service 启动ssh服务,ssh没有正常启动,22端口还是没有监听。查看系统日志,发现有错误信息提示/var/empty/sshd 这个目录异常。ls -l /var/empty/ 命令查看,发现这个目录的权限不对,正常的目录权限是root用户。chown root. /var/empty/sshd 用这个命令重新设置权限为root用户后,重启ssh即可恢复正常。  
&&相关问题
&&热门问题
服务与支持安装 CentOS 7 后必做的七件事_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
安装 CentOS 7 后必做的七件事
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢【16-02-21】 【求助】cents6升级到centos7后ssh无法连接_centos吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:20,898贴子:
【16-02-21】 【求助】cents6升级到centos7后ssh无法连接收藏
参考的精品贴里的 《centos6到centos7的升级过程》来升级的,升级也算完成了,但是reboot后ssh就连不上了。。。这是怎么回事?求大神教解决办法!
阿里云云市场镜像可以一键部署centos/windows操作系统云服务器需要的运行环境和个性化的软件应用,快速搭建centos/windows的主流web环境.
真心求教!
乖乖重新安装最省事
是不是重启后IP变了
IP和端口有没有变?服务有没有开?防火墙有没有允许?
看看配置文件有没有问题?防火墙关闭,另外是不是更新后selinux默认开启了?
......先看看能不能ping通......可能只是启动慢
登录百度帐号推荐应用中国领先的IT技术网站
51CTO旗下网站
诊断并解决CentOS SSH连接慢的方法
每次PuTTY使用SSH登录到远程的Linux进行管理的时候,远程登录的过程都非常慢――输入完用户名之后,非要等到30秒左右才会出来输入密码的提示。这难道是CentOS的问题?
作者:Mitchell Chu来源:| 15:46
每次PuTTY使用SSH登录到远程的Linux进行管理的时候,远程登录的过程都非常慢&&输入完用户名之后,非要等到30秒左右才会出来输入密码的提示。在实际处理问题的时候,特别需要快速响应的时候,这种状况着实让人难以忍受。
但后来具体测试了一下,发现这又并非是每种系统的通病,出现问题的机器主要集中的CentOS上,同样的Debian系统,在远程连接的过程就是健步如飞,丝毫没有卡顿犹豫的感觉。这难道是CentOS的问题?
出于好奇,查看了下两个系统在SSH时的差别
ssh -v ssh_test@192.168.128.137
SSH远程登录的时候显示的信息如下:
OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013...Some sensitive information...debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3debug1: match: OpenSSH_5.3 pat OpenSSH_5*debug1: Enabling compatibility mode for protocol 2.0debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4debug1: SSH2_MSG_KEXINIT sentdebug1: SSH2_MSG_KEXINIT receiveddebug1: kex: server-&client aes128-ctr hmac-md5 nonedebug1: kex: client-&server aes128-ctr hmac-md5 nonedebug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024&1024&8192) sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_GROUPdebug1: SSH2_MSG_KEX_DH_GEX_INIT sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY...Some sensitive information...debug1: ssh_rsa_verify: signature correctdebug1: SSH2_MSG_NEWKEYS sentdebug1: expecting SSH2_MSG_NEWKEYSdebug1: SSH2_MSG_NEWKEYS receiveddebug1: Roaming not allowed by serverdebug1: SSH2_MSG_SERVICE_REQUEST sentdebug1: SSH2_MSG_SERVICE_ACCEPT receiveddebug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,passworddebug1: Next authentication method: gssapi-keyexdebug1: No valid Key exchange contextdebug1: Next authentication method: gssapi-with-micdebug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address debug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address debug1: Unspecified GSS failure.
Minor code may provide more information
debug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address debug1: Next authentication method: publickeydebug1: Trying private key: /home/mitchellchu/.ssh/id_rsadebug1: Trying private key: /home/mitchellchu/.ssh/id_dsadebug1: Trying private key: /home/mitchellchu/.ssh/id_ecdsadebug1: Next authentication method: password
而Debian使用同样的命令测试的结果为:
OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013...Some sensitive information...debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4debug1: match: OpenSSH_6.0p1 Debian-4 pat OpenSSH*debug1: Enabling compatibility mode for protocol 2.0debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4debug1: SSH2_MSG_KEXINIT sentdebug1: SSH2_MSG_KEXINIT receiveddebug1: kex: server-&client aes128-ctr hmac-md5 nonedebug1: kex: client-&server aes128-ctr hmac-md5 nonedebug1: sending SSH2_MSG_KEX_ECDH_INITdebug1: expecting SSH2_MSG_KEX_ECDH_REPLY...Some sensitive information...debug1: ssh_ecdsa_verify: signature correctdebug1: SSH2_MSG_NEWKEYS sentdebug1: expecting SSH2_MSG_NEWKEYSdebug1: SSH2_MSG_NEWKEYS receiveddebug1: Roaming not allowed by serverdebug1: SSH2_MSG_SERVICE_REQUEST sentdebug1: SSH2_MSG_SERVICE_ACCEPT receiveddebug1: Authentications that can continue: publickey,passworddebug1: Next authentication method: publickeydebug1: Trying private key: /home/mitchellchu/.ssh/id_rsadebug1: Trying private key: /home/mitchellchu/.ssh/id_dsadebug1: Trying private key: /home/mitchellchu/.ssh/id_ecdsadebug1: Next authentication method: password
从上面可以看到,在CentOS中,系统使用了publickey,gssapi-keyex,gssapi-with-mic,和 password来进行认证(上面颜色标记行,23行),而Debian此时则使用了Publickey和password两种。在连接CentOS的时 候,在23行处花费了相当多的时间。我们在那里开始往下看,就能非常清楚的看到下面的信息:
#下面使用的是GSSAPI-KEYEX来进行验证debug1: Next authentication method: gssapi-keyex#但是报错:没有可用的Key来交换信息debug1: No valid Key exchange context#系统接着又使用下一个验证方法:GSSAPI-WITH-MICdebug1: Next authentication method: gssapi-with-mic#但遗憾的是,GSSAPI-WITH-MIC方法也失败。#原因:不能确定数字主机地址的域debug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address debug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address debug1: Unspecified GSS failure.
Minor code may provide more information
debug1: Unspecified GSS failure.
Minor code may provide more informationCannot determine realm for numeric host address# 在尝试几次后,SSH认证终于放弃了这种验证。进入下一个验证:Publickeydebug1: Next authentication method: publickey
除了这个方法还有其他方法么?这个自然是有的,CentOS其实就已经提供给我们一个解决方案了&&使用ssh远程登录的时候禁用GSSAPI验证。当然,还有一个问题不得不注意,如果你的机器上启用了UseDNS的话,需要一并关闭,具体可参见最后的说明。
从错误可以看出应该是和主机域相关的问题&&应该是无法确认IP对应的域,因此会出现这个问题。GSSAPI主要是基于Kerberos的,因此要解决这个问题也就变得要系统配置有Kerberos,这对于没有Kerberos的筒子们来说,配置个Kerberos就为了解决个登录延时问题,似乎不是个明智的决定&&特别是在生产环境中!最小化满足需求才是王道。
下面先放出处理GSSAPI的方法
禁用GSSAPI认证有两个方式:客户端和服务端
1. 客户端禁用
比较简单,影响的只有单个客户端用户,可以用下面的方法实现:
ssh -o GSSAPIAuthentication=no your-server-username@serverIP
用上面的方法登录远程,即可实现禁用GSSAPIAuthentication。
如果你嫌麻烦,直接配置你ssh客户端的文件/etc/ssh/ssh_config来达到永久解决这个问题:
vi /etc/ssh/ssh_config### 找到ssh_config文件里面的GSSAPIAuthentication yes这行### 修改为GSSAPIAuthentication no### 保存ssh_config文件并退出
这个修改方法是将所有这个机器上的用户都影响到了,如果你影响面不要那么的广泛,只要在指定的用户上实施禁用GSSAPIAuthentication的话,那么你可以在该用户的目录下,找到.ssh目录,在其下面添加config文件,并在文件内添加上面这句,如果没有这个文件,你也可以直接这么做:
cat &&~/.ssh/config&&EOFGSSAPIAuthentication noEOF
使用cat,直接将输入导出到文件中,这时候,你在使用ssh连接远程的目标主机时,就不会再使用GSSAPI认证了。
上面这些文件是在客户端,不是服务端的。也就是说,要修改这个文件,你的客户端也要是Linux才行。
如果你是在Windows下使用PuTTY这样的客户端工具,就不使用上面这个方法了,PuTTY下可以尝试在连接之前进行设置:
PuTTY Configuration -& Connection -& SSH -& Auth -& GSSAPI -& (取消勾选)Attempt GSSAPI authentication(SSH-2 only)
如果没有关闭PuTTY的GSSAPIAuthentication,你可以在连接的窗口右键(或:Ctrl + 右键)查看日志,可以发现PuTTY会自动尝试GSSAPI连接的日志:
2014-05-18 23:46:54 Using SSPI from SECUR32.DLL2014-05-18 23:46:54 Attempting GSSAPI authentication2014-05-18 23:46:54 GSSAPI authentication request refused
嗯,上面基本上将客户端禁止GSSAPIAuthentication的方法罗列了一下。
注意:上面这些方法是比较通用的。
2. 如果你已经配置了Kerberos的情况下
那么你也可以尝试下如下的客户端解决这个问题的方法:
添加远程主机的主机名到你本机的host文件中(Linux是/etc/hosts,Windows是系统盘:\Windows\System32\drivers\etc\hosts)。Linux和Windows下都可以添加下面这行。
### 注意:下面这样的IP-Addr要替换成你的远程机器的IP地址,HostName,自然是主机名IP-Addr HostName
添加完毕之后,保存退出。
如果你没有配置Kerberos的话,仅配置这个hosts文件一样是不能解决问题的,在使用ssh登录的时候,你可以看到报错日志会类似下面这样:
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-midebug1: Next authentication method: gssapi-keyexdebug1: No valid Key exchange contextdebug1: Next authentication method: gssapi-with-micdebug1: Unspecified GSS failure.
Minor code may provide more informationCredentials cache file '/tmp/krb5cc_0' not found debug1: Unspecified GSS failure.
Minor code may provide more informationCredentials cache file '/tmp/krb5cc_0' not found debug1: Unspecified GSS failure.
Minor code may provide more information
debug1: Unspecified GSS failure.
Minor code may provide more informationCredentials cache file '/tmp/krb5cc_0' not found debug1: Next authentication method: publickey
这个错误我在刚开始的时候也犯了的,需要注意。
3. 服务端禁用GSSAPIAuthentication
直接到/etc/ssh/sshd_config里面,将GSSAPIAuthentication yes改为no即可了,同时也请注意,你可能也需要将UseDNS这个也修改成UseDNS no(这个要注意,每个系统的默认值不同,此处以CentOS 6为例):
sudo vi /etc/ssh/sshd_config### 普通用户权限不够,需要root权限### 找到GSSAPIAuthentication yes,修改为### GSSAPIAuthentication no### 注意,这里你也需要将UseDNS修改为no,CentOS默认是yes,即使这行已被注释,你也需要加上### UseDNS no### 有看到人说UseDNS yes不需要修改为UseDNS no,Mitchell测试下来是需要的。### 保存文件,退出
当禁用之后,我们需要重启SSH服务来保证新的配置文件被正确应用:
service sshd restart
这个时候,再次使用SSH登录这个主机时,是不是感觉飞快了?
呼~ 终于完成了这篇长文,要一边捣腾一边弄出这些个文字,还是真是有点困难。不过,这样也就将问题捣腾的差不多了,希望看文章的你能够看的明白,欢迎讨论。&
1. GSSAPI:Generic Security Services Application Program Interface,GSSAPI本身是一套API,由IETF标准化。其最主要也是著名的实现是基于Kerberos的。一般说到GSSAPI都暗指Kerberos实现。
2. UseDNS:是OpenSSH服务器上的一个DNS查找选项,而且默认还是打开的,在打开的状态下,每当客户端尝试连接OpenSSH服务器的时候,服务端就自动根据用户客户端的IP进行DNS PTR反向查询(IP反向解析才会有记录),查询出IP对应的Hostname,之后在根据客户端的Hostname进行DNS正向A记录查询。通过这个查询,验证IP是否和连接的客户端IP一致。但绝大部分我们的机器是动态获取IP的,也就是说,这个选项对于这种情况根本就没用&&即使是普通静态IP服务器,只要没有做IP反向解析,也难以适用。如果你符合这些情况,建议关闭UseDNS以提高SSH远程登录时候的认证速度。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创调查原创热点头条
24H热文一周话题本月最赞
讲师:30791人学习过
讲师:90589人学习过
讲师:14691人学习过
精选博文论坛热帖下载排行
本书是一本以示例形式直接面向应用的网络管理图书。书中以大量示例和大量实用网络管理与故障排除经验介绍了当前网络管理工作的各主要方面。...
订阅51CTO邮刊}

我要回帖

更多关于 centos ssh 连接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信