大家在使用XShell工具连接Ubuntu系统时,可能会出现错误如下:
通过在网上查阅资料和实践解决这个问题,将我的思路分享给大家!
首先,我会先从使用Xshell连接远程服务器会涉及哪些东西上思考这个问题,即通过ssh服务连接远程服务器的整体流程是个什么样子的!
那么我们的排查思路,就很清晰了
文章目录
- 1.确认SSH服务是否安装
- 2.SSH配置文件的修改
- 3. 其他情况
1.确认SSH服务是否安装
首先,得确认ssh-server
是否存在本机中。(通常会有的,由于我重装系统后,没勾选导致我没发现机器不存在该服务,那自己就先安装下咯)
ps -e | grep ssh
如果没有上述的画框内容你就得先进行安装事项。
SSH分为客户端 openssh-client
和服务器 openssh-server
,可以利用以下命令确认电脑上是否安装了客户端和服务器。
dpkg -l | grep ssh
如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),如果要开放本机的SSH服务就需要安装服务器。
sudo apt-get install openssh-client
sudo apt-get install openssh-server
然后就可以启动ssh-server
服务了
sudo /etc/init.d/ssh start
停止和重启ssh服务的命令如下:
sudo /etc/init.d/ssh stop #server停止ssh服务
sudo /etc/init.d/ssh restart #server重启ssh服务
2.SSH配置文件的修改
若ssh服务启动,则修改下配置文件,允许root用户远程连接。(大多数是这种情况导致的远程连接失败)我使用的Ubantu系统,该系统默认禁止root用户登录ssh。
编辑sshd_config文件,我们输入:vi /etc/ssh/sshd_config
将下图红框中的注释去掉
Authentication
限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。
LoginGraceTime
用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为妙
PermitRootLogin
用来设置能不能直接以超级用户ssh登录,root远程登录Linux很危险,建议注销或设置为no
StrictModes
用来设置ssh在接收登录请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议开启,并使用默认值"yes"来预防可能出现的低级错误。
如果对该位置文件sshd_config
有兴趣的话,可以查看博主灯塔微光的文章SSH配置文件 /etc/ssh/sshd_conf参数详细说明
重启sshd服务
service sshd restart
查看端口是否正常监听
netstat -apn | grep 22
关闭防火墙
service iptables stop
chkconfig iptables off
3. 其他情况
检查了在Xshell客户端填写的IP、连接端口、用户、密码、网络是否正确?
测试:是否能够ping通服务器,telnet 端口也能成功,使用的root用户,密码正确(从服务器B跳转到服务器A上,能够正常跳转,说明密码没有问题),网络正常。
telnet 192.168.52.130 22 //物理机检测端口
ssh root@192.168.52.130 //登录一台好的服务器后,使用SSH跳转到目标服务器上,若成功,则说明密码没有问题
还有可能会出现,端口占用,IP冲突等其他情况,更改相应的服务端口,IP地址号即可。
上述内容和步骤,也是我在网上参考各位大佬的一些解决方案之后,亲测有效的办法。希望对你解决该问题有所帮助!