使用场景
在仅允许使用公钥登录的服务器上,临时需要厂商技术人员支持; 但不想让他们具有永久访问的选项,或者由于不想添加对方的公钥到 authorized_keys 文件。
是否能够仅临时创建一个提供1小时或1天的访问权限的 SSH 公钥?
实验环境
系统版本: CentOS 7.x
为了方便区分操作,文档中预先对机器设置了主机名
SSH 服务器主机名: server
SSH 客户端主机名: client
实验步骤
服务器: 生成 SSH 的非对称密钥,并将密钥放置于 /etc/ssh 目录中,该密钥的作用是: 用于对客户端的公钥进行签名

客户端: 使用 ssh-keygen 命令生成 SSH 非对称密钥对

客户端: 将生成的公钥(文件默认位于 /root/.ssh/id_rsa.pub )发送给服务端; 此处由于实验环境,使用 scp 命令进行演示,工作中应该通过其他介质传输该文件(如直接把公钥文件中的内容,直接复制给服务器的管理员)

服务器: 使用自己的私钥,对客户端的公钥进行签名,并且指定仅允许客户端使用"chenjian"用户免密登录,期限为1天; 签名后,会在当前目录下生成一个新的签名公钥文件。

服务器: 将签名后的公钥,发给客户端(工作中就是直接将该文件以其他传输介质发送给客户端管理人员)

客户端: 收到签名的公钥后,将其移动到 ~/.ssh/ 目录下

客户端: 查看该签名公钥的信息,了解该公钥到期时间以及能够使用什么用户进行免密登录; 要查看公钥信息,请使用 ssh-keygen -L 命令

服务器: 由于签名的证书限定了使用 "chenjian" 用户进行免密登录,所以系统上要存在该用户,否则客户端将无法登录; 使用 adduser 命令创建一个普通用户

客户端: 使用 chenjian 用户进行免密登录

服务器: 查看连接时的日志信息

至此,实验结束; 还可以额外验证当公钥到期后,能否正常登录,使用 timedatectl 命令将日期后移2天并验证

客户端: 重新尝试免密登录; 会发现免密登录失败,要求使用密码进行登录

服务器: 再次查看日志; 会显示公钥已经过期; 实验结束

欢迎关注微信公众号【厦门微思网络】。http://www.xmws.cn
从2002年至今专业IT认证培训20周年
主要课程:思科、华为、红帽、ORACLE、VMware、CISP、PMP等认证培训及考证