Linux SSH 登录(带证书到期)

bam*_*bam 2 linux ssh certificate

我有一个 Ubuntu 16.06 Rootserver,还有其他几个人可能需要以特殊用户身份登录它。

我不想发送密码甚至私钥。

是否可以生成在生成后 +3 天到期的密钥,而无需触及服务器上的任何内容?

即使用服务器知道的根证书,并且我进入了一个安全的地方,我可以用它来生成那些具有到期日期的密钥?

use*_*686 7

甚至私钥。

你为什么发送私钥?要求用户生成他们自己的密钥对,并让他们向发送公钥。

是否可以生成在生成后 +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
    
    Run Code Online (Sandbox Code Playgroud)

    这里-n指定谁可以使用证书登录,并-V设置其到期时间。(该-I选项只是为证书本身设置一个任意名称。)

  • Authorized_keys:支持 OpenSSH 7.7 或更高版本,没有任何客户端要求。到期信息不存储在密钥本身中,而是存储在服务器的authorized_keys文件中:

    expiry-time="20180704" ssh-ed25519 AAAAC3NzaC1lZDI1NTE...
    
    Run Code Online (Sandbox Code Playgroud)

    从手册页sshd(8),允许的时间格式是YYYYMMDDYYYYMMDDHHMM[SS]在服务器的主要时区。

    请注意,此方法仅在用户被阻止编辑其 authorized_keys 文件时才是安全的,否则他们只能延长到期时间!