我有一个 Ubuntu 16.06 Rootserver,还有其他几个人可能需要以特殊用户身份登录。
我不想到处发送密码甚至私钥。
是否可以生成在生成后 3 天内过期的密钥,无需触碰服务器上的任何东西?
即使用服务器知道的根证书,并且我将其放在安全的地方,我可以使用它来生成具有有效期的密钥?
答案1
甚至私钥。
为什么会你曾经发送过私钥吗?要求用户生成自己的密钥对并让他们发送你公钥。
是否可以生成在生成后 3 天内过期的密钥,
假设服务器使用OpenSSH,则有两种方法:
证书:支持 OpenSSH 5.4 或更高版本,但全部用户也必须使用 OpenSSH – 生成的证书不适用于 PuTTY 或其他客户端。
首先生成一个“权威” SSH 密钥并将
ssh-keygen
其列在服务器的配置中(使用选项TrustedUserCAKeys
),然后使用它来颁发用户证书。颁发证书:当用户向您发送
id_rsa.pub
文件时,使用 CA 密钥对其进行签名。签名后,将新id_rsa.pub-cert
文件发回给用户。ssh-keygen -s ~/private/user_ca -I user_fred -n fred -V +3d fred_id_rsa.pub
此处
-n
指定谁可以使用证书登录,并-V
设置其到期时间。(该-I
选项只是为证书本身设置一个任意名称。)授权密钥:支持 OpenSSH 7.7 或更高版本,无需任何客户端要求。到期信息不存储在密钥本身中,而是存储在服务器的授权密钥文件:
expiry-time="20180704" ssh-ed25519 AAAAC3NzaC1lZDI1NTE...
来自手册页SSHD(8),允许的时间格式为
YYYYMMDD
并且YYYYMMDDHHMM[SS]
位于服务器的主时区。请注意,仅当阻止用户编辑其authorized_keys文件时,此方法才是安全的,否则他们只能延长到期时间!