ubuntu的root用户无法ssh远程连接的一种原因及其解决方法

ubuntu的root用户无法ssh远程连接的一种原因及其解决方法,第1张

环境: ubuntu16.04 LST, 配置了路由器的端口映射

现象: 普通用户可以通过ssh远程连接上服务器, 但是root用户用ssh登陆时始终报Permission Denied, 而且可以百分百确定root的密码是正确的.

一种可能的原因: root用户的密码过于简单, SSH自动检测并关闭了root用户的远程连接许可.

解决方法: (切换到root用户)

1. 首先确定是不是这个原因导致的, 查看ssh的配置文件:

 $ vim /etc/ssh/sshd_config

如果出现如下提示, 则确认了原因.

2. 根据提示的步骤进行故障排除

a. 改用户名

    $ passwd root

后面会输入两次新的密码, 注意要把密码设置的复杂一些, 不然还要重来.

b. 改配置文件

$ vim /etc/ssh/sshd_config

把"DenyUsers root"这一行注释掉, 如下图所示

c. 重启ssh服务

     $ service sshd restart

问题应该可以得到解决, root可以远程登陆了。

- ----------------------------------------------------更新-------------------------------------------------------------------- -

不建议让root用户远程登录,身边发生过root用户被攻破的惨剧。如果确有需求,请务必将密码设置的相当复杂。前事不忘后事之师,谨记!!!

从客户端来看,SSH提供两种级别的安全验证。

对于第二种级别,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有用户的私人密匙)。但是整个登录的过程可能需要10秒。

将本地用户生成的公钥推送至远程服务器后,远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

这里不使用ssh-copy-id命令,改用下面的命令,来解释公钥的保存过程:

输入命令 ssh user@host ,然后根据提示输入远程服务器的登录密码

也可在配置文件/etc/ssh/ssh_config 中设置user和host(ip), 来简化命令, 配置如下:

配置后, 登录请求时只需输入如下命令:

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

公钥登录原理 :就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果解密验证成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

执行上述命令首先会让你输入生成密钥的文件名: myPemKey (自定义),之后一路回车。

配置后,登录远程服务器时只需输入一下命令,便可直接登录成功:

修改后重启ssh服务

则远程连接时指定端口

(1) 通过iptables设置ssh端口的白名单,如下设置只允许192.168.1.0/24网段的客户机可以远程连接本机

(2) 通过/etc/hosts.allow里面进行限制(如下),/etc/hosts.deny文件不要任何内容编辑,保持默认!

例如:

修改远程服务器ssh服务配置文件/etc/ssh/sshd_config

修改远程服务器配置文件/etc/ssh/sshd_config, 如下:

如果本机系统有些账号没有设置密码,而ssh配置文件里又没做限制,那么远程通过这个空密码账号就可以登陆了,这是及其不安全的,所以一定要禁止空密码登陆。

修改远程服务器配置文件/etc/ssh/sshd_config,如下:

参考:

ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登录到别的电脑,需要安装openssh-client,该程序Ubuntu是默认安装的。而如果需要从远程连接到本机,则需要安装openssh-server,该程序需要自己安装。在Ubuntu下安装openssh-server非常简单。

安装openssh-server

$ sudo apt-get install openssh-server

查看openssh-server是否启动

$ ps -e | grep ssh

进程ssh-agent是客户端,sshd为服务器端,如果结果中有sshd的进程说明openssh-server已经启动,如果没有则需运行命令启动。

启动、停止和重启openssh-server的命令如下

/etc/init.d/ssh start

/etc/init.d/ssh stop

/etc/init.d/ssh restart

配置openssh-server

openssh-server配置文件位于/etc/ssh/sshd_config,在这里可以配置SSH的服务端口等,例如:默认端口是22,可以自定义为其他端口号,如222,然后需要重启SSH服务。

关闭ssh登录到root用户

开放ssh登录root权限是非常危险的,所以不是特别需要,应该关闭该权限,在配置文件/etc/ssh/sshd_config中找到PermitRootLogin yes一行,将yes改为no然后重启ssh即可。

Ubuntu中配置openssh-server开机自动启动

打开/etc/rc.local文件,在exit 0语句前加入:

/etc/init.d/ssh start

关于客户端连接

客户端可以用putty、SecureCRT、SSH Secure Shell Client等SSH 客户端软件,输入您服务器的IP地址,并且输入登录的用户和密码就可以登录了。我常选择的客户端软件是putty。

关于ssh的加密

实际上ssh的使用远不止这些,ssh还有很重要的一部分内容,那就是ssh通过公钥私钥进行加密,例如git就可以采用加密ssh的方式访问。

我现在使用的是小鸟云,6月新近活动认证可获得0元服务器,建议去看看!


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/534388.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-24
下一篇2023-06-24

发表评论

登录后才能评论

评论列表(0条)

    保存