在Redhat中,想用root用户使用password远程登录Linux,结果怎么都登录不了,后来纠结了一会儿,终于可以了!下面简单的做个小结,希望为同样遇到这么纠结问题的朋友提供一点借鉴。
在安装玩Linux之后,OpenSSH是默认开启的,但是这并不代表我们使用SSH客户端就能登录了。如果如下图设置好登录信息之后,点击connect。
![](https://i-blog.csdnimg.cn/blog_migrate/84e091f28c1cb387969f6e29e0185cbb.jpeg)
出现如下图的错误
![](https://i-blog.csdnimg.cn/blog_migrate/98fc03851b75a2391cf265f66ba5b329.jpeg)
那么说先要做的就是检查一下,Linux的防火墙是不是把SSH给禁了。查看方法,在Linux命令行中输入setup
![](https://i-blog.csdnimg.cn/blog_migrate/c19059b69eebe92c6153b9e0ed5991ae.jpeg)
按tab,移到Run Tool 按enter
![](https://i-blog.csdnimg.cn/blog_migrate/a21606cbb4a78d9813a2e47128c2b241.jpeg)
看到此时设置的安全级别是Hign ,那在这个安全级别上,SSH会被阻止的,我们要做的就是设置为No firewall。
当改完防火墙设置后,使用root用户,password认证连接SSH,结果还是连不上,此时可以查看一下sshd_config文件,这个文件存放在/etc/ssh/sshd_config,使用vim /etc/ssh/sshd_config 打开,查看它是否允许password认证连接,如下截图,如果是被注释的,那把# 去掉,然后记得serveice sshd restart。
![](https://i-blog.csdnimg.cn/blog_migrate/9f787c02b3bc68b979cc4018c9c0213e.jpeg)
通常更改这两处之后,使用root用户,password认证的SSH连接肯定是连得上的。
下面简单的说说sshd_config,它是ssh的主配置文件,vim /etc/ssh/sshd_config 查看ssh主配置文件。
#Port 22 ← 找到此行将行头“#”删除,再将行末的“22”改成其他端口,默认22不安全
#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
Protocol 2 ← 修改后变为此状态,仅使用SSH2
#ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024
ServerKeyBits 1024 ← 修改后变为此状态,将ServerKey强度改为1024比特
#PermitRootLogin yes ← 找到这一行,将行首的“#”去掉,并将yes改为no
PermitRootLogin no ← 修改后变为此状态,不允许用root进行登录
#PasswordAuthentication yes ← 找到这一行,将yes改为no
PasswordAuthentication no ← 修改后变为此状态,不允许密码方式的登录
#PermitEmptyPasswords no ← 找到此行将行头的“#”删除,不允许空密码登录
PermitEmptyPasswords no ← 修改后变为此状态,禁止空密码进行登录
#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
Protocol 2 ← 修改后变为此状态,仅使用SSH2
#ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024
ServerKeyBits 1024 ← 修改后变为此状态,将ServerKey强度改为1024比特
#PermitRootLogin yes ← 找到这一行,将行首的“#”去掉,并将yes改为no
PermitRootLogin no ← 修改后变为此状态,不允许用root进行登录
#PasswordAuthentication yes ← 找到这一行,将yes改为no
PasswordAuthentication no ← 修改后变为此状态,不允许密码方式的登录
#PermitEmptyPasswords no ← 找到此行将行头的“#”删除,不允许空密码登录
PermitEmptyPasswords no ← 修改后变为此状态,禁止空密码进行登录
当然使用SSH远程连接的password认证,是很不安全的,所以通常情况下,会是key认证,当然这样就比较麻烦一点。还有一个稍微安全一点的使用SSH的password认证的办法,就是只允许内部的某些用户进行SSH的password认证,配置的方法如下
vim /etc/hosts.deny
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd: ALL
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd: ALL
默认打开里面是空的,可以加一天sshd:ALL这样就会拒绝所以的SSH连接,保存退出
再打开vim /etc/hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
sshd: 192.168.170.
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
sshd: 192.168.170.
默认打开也是空的,添加一天sshd:192.168.170. 这样就允许这个网段的主机使用SSH连接Linux了,这里既包括password认证和key认证。所有这些配置结束之后必须service sshd restart 才能生效!
转载于:https://blog.51cto.com/nameyjj/396357