现象: 普通用户可以通过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元服务器,建议去看看!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)