最近在用xshell的时候发现ip网络已经打开,就是无法远程连接,在网上搜了如下的解决方案,亲测可用!
确认步骤:
(1)输入:ps -e |grep ssh 如果服务已经启动,则可以同时看到“ssh-agent”和“sshd”,如果没有启动,或没有安装服务 ;
(2)输入sudo apt-get install openssh-server 安装服务。
(3)可以测试用SSH连接本机看是否能成功登录。
输入命令:ssh -l 用户名 host 然后会提示输入密码,如果正确就可以登录,同样,在客户端就可以使用SSH远程登录此服务器。网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务。最终成功的方法如下:
sudo apt-get install openssh-server
Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。
然后确认sshserver是否启动了:
ps -e |grep ssh
如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start ,如果看到sshd那说明ssh-server已经启动了。
ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:
sudo /etc/init.d/ssh restart ssh连接:ssh root@192.168.0.130
断开连接:exit
但是弄好这个登录的时候又出现了一个问题
我使用root登录,密码也没错啊?原来是ssh默认不允许root用户登录。咋办?于是改配置文件:我使用root登录,密码也没错啊?原来是ssh默认不允许root用户登录。咋办?于是改配置文件:
vim /etc/ssh/sshd-config,找到如下一行:
vim /etc/ssh/sshd-config,找到如下一行:
如图,把PermitRootLogin这一项后面的“prohibit-password”改为:“yes”,重启ssh服务,然后回到Xshell继续使用root登录,成功。
注意:如果不改这个,使用非root是可以用xshell登录的。
2.说说mysqlworkbench无法连接的问题。
首先首先我的环境:ubuntu10.04+mysql5.7+mysql workbench
我的报错提示是这样的:
“Failed to connect to mysql at ***:3306 with user **,cann't connect to mysql server on *** (10061)”,如图:
注意看最后的10061,这个就是拒绝连接的错误码。
修改如下文件:vim /etc/mysql/mysql.conf.d/mysqld.cnf
这个我也不懂了,好在找到了资料,意思是,现在虽然mysql允许远程连接了,但是root用户还没有远程连接的权限,咋办呢?
创建一个新用户,并赋予它远程连接的权限:
1)登陆mysql
2)创建远程登陆用户并授权,在要链接的服务器上操作
mysql> grant all PRIVILEGES on *.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;
上面的语句表示将所有数据库的所有表的所有权限授权给 username 这个用户,允许 username 用户在 xxx.xxx.xx.x 这个 IP 进行远程登陆,并设置 username 用户的密码为 password。
分析参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
*.* 表示上面的权限是针对于哪个表的,第一个*指的是数据库名称,后面的 * 表示对于所有的表,由此可以推理出:对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
username表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
xxx.xxx.xx.x 表示允许远程连接的 IP 地址,你的IP,如果想不限制链接的 IP 则设置为“%”即可。
password 为用户username的密码。
接着执行如下语句是设置生效