利用OpenSSH实现基于秘钥的认证
SSH协议介绍:
SSH是Secure Shell的缩写,意思是安全的shell
目前版本有 ssh v1和ssh v2:在目前工作中大多都使用ssh v2版,ssh v1已经不安全,尽量不使用
ssh v1:基于CRC-----32做MAC(Message Authentication Code),不安全
ssh v2:基于双方主机的协商最安全的MAC的方式;基于DH算法做秘钥交换;基于RSA或DSA实现身份认证;客户端通过检查服务器端的主机秘钥来判断是否能够将继续通信
有两种认证方式:
基于口令
基于RSA或DSA秘钥
软件:openssh
openssh是ssh协议的一种开源实现,使用openssl实现基于RSA或DSA的秘钥认证
一、环境准备
1、两台linux主机,分别是192.168.10.203和192.168.10.120, 使192.168.10.203做为服务器端,192.168.10.120做为客户端
2、安装软件
在服务器端安装ssh服务端和ssh客户端
在客户端安装ssh客户端
3、安装后生成的文件:
服务端:
客户端:
二、配置rsa秘钥(在客户端配置)
1、生成rs秘钥
方法一:
方法二:不需要交互,方便在编写shell时使用
命令解释
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-kegen: openssh秘钥生成工具
-t rsa| dsa: 指定秘钥类型
-f /path/to/somfie: 指定生成秘钥的存储位置
2、将客户端的公钥传给服务器端
3、在服务器端查看客户端传递过来的公钥信息
4、登录验证;此时只需要使用用户而不需要输入密码即可登录服务器端
三、使用小技巧
利用openssh黑白名单限制用户登录
1、条件两个用户centos和ferdora
2、测试确保两用户都可以正常登录服务器
3、修改服务器配置文件:/etc/ssh/sshd_config,在最后添加一下信息
AllowUsers root centos
4、重启sshd服务进行验证:
服务器端重启sshd服务
客户端连接测试: