Linux SSH 登录(证书过期)

Linux SSH 登录(证书过期)

我有一个 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文件时,此方法才是安全的,否则他们只能延长到期时间!

相关内容