OpenSSH是应用SSH协议的开源远程控制软件,除了默认的用户名+密码认证验证方式以外,OpenSSH还可以使用基于秘钥对(key pair)或者基于主机身份(Host-based)的验证方式。
关于如何基于秘钥对进行SSH身份验证网上有非常多的资料,而关于如何基于主机身份进行SSH身份验证的资料则比较混乱,本文就以作者最近的实践为例加以说明。
这次实验共有2台Linux,客户端主机名是mycentos,IP地址是192168125;服务器端主机名是woocentos7,IP地址是19216816。
服务器端和客户端都要修改SSH配置文件以支持主机身份验证,服务器端需要修改/etc/ssh/sshd_config文件,将HostbasedAuthentication项改为yes,IgnoreRhosts项改为no;客户端需要修改/etc/ssh/ssh_config文件,将HostbasedAuthentication项改为yes,EnableSSHKeysign项改为yes。服务器端修改配置文件以后,需要重启sshd服务使修改后的配置生效,命令是systemctl restart sshd。
服务器端还需要在/etc/hostsequiv配置文件中增加客户端的主机名,在root用户的~/shosts文件中增加客户端的主机名与对应的用户名(root,两项之间用空格隔开),在/etc/ssh/ssh_known_hosts文件中增加客户端的主机公钥信息,格式如下:
mycentos,192168125 ecdsa-sha2-nistp256 AAAAE2VjZ……KO8WzOJo=
其中“mycentos,192168125”是客户端的主机名和IP地址(这样不论是通过主机名还是IP地址都可以找到对应的公钥信息),“ecdsa-sha2-nistp256”是公钥类型,“AAAAE2VjZ……KO8WzOJo=”是具体的公钥内容。可以通过执行ssh-keyscan -t ecdsa 192168125 >>/etc/ssh/ssh_known_hosts命令完成 *** 作。
做完以上的 *** 作,理论上客户端就可以通过验证主机身份的方式用ssh登录服务器端了,不过仍需注意几点:
1、服务器端最好关闭SELinux,如setenforce 0以免影响正常登录,关闭SELinux后如果客户端仍然无法登录,可以重启服务器端sshd服务。注意:不关闭SELinux应该也是可以实现主机认证的功能的,但是因为时间关系,作者并没有再尝试。
2、服务器端和客户端的/etc/hosts文件中应该有对端的主机IP地址解析,以免提示解析错误。
3、服务器端和客户端的用户配置要保持一致。
4、客户端登录时不用添加用户名,使用其他用户登录(非当前Shell用户)时依然会提示输入密码,也就失去了主机认证的意义。
5、客户端登录时可执行ssh -v server_name|server_IP或者ssh -vvvvv server_name|server_IP命令,能够显示登录过程中的详细协商过程和传递参数,对于出现异常时排错非常有用。配置的时钟服务器的ip地址为192168100116
第一步 为服务器和客户机安装ntp ntpdate
[root@sql-proxy1 app]#yum install ntp ntpdate -y第二步 查找时间同步服务器
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)