在做机器人项目的时候,用的是Ubuntu的linux,跟之前的CentOS的操作命令有一点差别,就比如防火墙的名字,在Ubuntu系统中叫什么ufw,真是有点不好接受。
为了能模拟环境,我又弄了一台电脑,但是老在两个电脑之间切换很费劲。于是想利用PieTTY这个软件进行远程的SSH连接。但是怎么都连接不上,老是denied。两个OS能相互的ping通,防火墙什么的都关闭了,怎么还能连不上呢?于是Google了一下。
首先我的这台机器是已经关闭了防火墙,甚至直接卸载了防火墙的:
ufw disable
apt-get remove iptables
网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务。最终成功的方法如下:
sudo apt-get install openssh-server
Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。
然后确认sshserver是否启动了:
ps -ef | grep ssh
如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。
ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:
如果ssh-server没有启动成功,那么可以重启系统,这样ssh的服务器就打开了。
在实际的使用中还发生一些例外,那就是利用其它的user是可以登陆ssh的,但是利用root用户不能登陆ssh,问题的原因就是ssh的配置出现了问题,需要额外的配置一下ssh的服务器。
1.Ubuntu的root用户默认是没有密码的,所以要为root用户增加新的密码,或者修改root密码:
sudo passwd root
2.切换到root用户,修改 /etc/ssh/sshd_config:
xxx@ubuntu14:~$ su - root
Password:
root@ubuntu14:~# vi /etc/ssh/sshd_config
3.注释掉 #PermitRootLogin without-password,添加 PermitRootLogin ye
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
4.重启 ssh 服务
root@ubuntu14:~# sudo service ssh restart
ssh stop/waiting
ssh start/running, process 1499
root@ubuntu14:~#