在学习使用linux系统时,使用过一些远程连接或者传输的软件来控制虚拟机,因为虚拟机实在太卡了,发觉用xshell来学习shell是个不错的选择,但在使用的时候遇到过很多连接不上情况,如下图所示:

遇到这种情况基本都是虚拟机的ssh出了问题,所以把遇到的不同的情况记录下来,方便以后查看。
1. 目标机IP错误
查看一下目标机的IP地址正确与否,不一致更改一下ssh后的IP即可
ifconfig
2.目标机ssh服务未启动
查看一下ssh服务是否启动
sudo service ssh status若提示ssh为stop
![]()
重启一下ssh服务即可
sudo service ssh start再次查看
![]()
ssh服务启动成功
3.防火墙挡住了ssh服务
ssh服务已启动但还是连接不上目标机,可能是防火墙挡住了ssh服务
尝试关闭防火墙后再次连接,
ubuntu系统中采用的防火墙是ufw
sudo ufw disablecentos系统中采用的防火墙是iptables
sudo chkconfig iptables off关闭防火墙后再次连接ssh
可将ssh添加至防火墙规则中
sudo ufw allow ssh4.目标机ssh服务未安装
若目标机中没有ssh服务,在启动ssh服务时会提示没有此项服务,在目标机中安装ssh服务即可
ubuntu中安装ssh服务为
sudo apt-get install sshcentos中安装ssh服务为
sudo yum install ssh安装成功后重启ssh服务,再次连接即可
5.目标机openssh-server服务未安装
由于Ubuntu中自带openssh-client服务所以,会出现Ubuntu可以ssh连接别的机器,但别的机器无法ssh连接ubuntu,若发生此种情况可查看进程中是否有sshd服务
sudo ps -e|grep ssh![]()
若不存在则说明openssh-server服务未安装,同时/etc/init.d目录下没有ssh脚本无法通过 /etc/init.d/ssh start 来启动ssh服务。
安装openssh-server服务即可。
sudo apt-get install openssh-server若不出现任何提示为安装成功,启动ssh服务即可,若出现以下提示:

说明Ubuntu自带的openssh-client版本与要安装的openssh-server版本不一致,需要解决他们之间的依赖关系,安装对应版本的openssh-server即可,或直接输入修复依赖关系,尝试卸载出错的包,重新安装正确版本的。
sudo apt-get -f install安装完成后再次查看,可以看到sshd进程已启动,再次连接即可。
