如何使用证书颁发机构授予 SSH 临时访问权限?

如何使用证书颁发机构授予 SSH 临时访问权限?

我正在尝试使用 AWS EC2 实例上的证书颁发机构提供 SSH 临时访问权限,但无法正确执行。您能否帮助指导如何实现此目标?遵循以下流程:

Step 1: Generate CA certificate on user's machine (currently doing for testing) : ssh-keygen -f ssh_ca

Step 2: Generate user's ssh keys using (on users machine): ssh-keygen
-f user_ssh_key

Step 3: Generate CA approved public key using user's public key: ssh-keygen -s ssh_ca -I host_name -h -n host_name -V +1d user_ssh_key.pub , this gives user_ssh_key-cert.pub (Public key which is signed)

Step 4: Copied ssh_ca.pub (CA pub key) and user_ssh_key ,user_ssh_key-cert.pub (user's pub and private key) on server where i have to do ssh.

Step 5: Do sudo su, go to file: vim /etc/ssh/sshd_config, Add CA pub key using : TrustedUserCAKeys /etc/ssh/ssh_ca.pub, add host key using HostCertificate /etc/ssh/user_ssh_key-cert.pub and added private key using : HostKey /etc/ssh/user_ssh_key

Step 6: Do /etc/init.d/sshd restart

Step 7: Open file /etc/ssh/ssh_known_hosts, add @cert-authority * (Content of ssh_ca.pub, without any change)

When i try to do ssh using : ssh host_name@IP_ADDRESS

Getting this error during ssh which seems to be a issue :

debug1: Found CA key in /etc/ssh/ssh_known_hosts:1

key_cert_check_authority: invalid certificate

Certificate invalid: not a host certificate

debug1: No matching CA found. Retry with plain key

有人能帮助指导这个过程吗?似乎出了点小问题,我无法弄清楚?

目前我没有 DNS 名称,但有我想要连接的 IP 地址。

提前致谢

答案1

我将介绍提供临时 ssh 访问所需的所有步骤:

1.创建 SSH 用户 CA 密钥对

ssh-keygen -f <key-pair-name> -b 4096 这将创建一个私钥,用于签署用户的公钥,以及一个公钥,该公钥将被放置并配置为服务器端的受信任 CA 密钥。私钥必须存储在安全的位置并使用强密码保护。

2. 在服务器上配置 SSH 信任 CA 密钥

a. 将 CA 公钥复制到/etc/ssh/目录中,并确保其具有适当的所有权(用户 root、组 root)和权限(0600,无 ACL),如下所示:

-rw------- 1 root root 404 Jan 29 08:05 users_ca.pub

b. 添加一个条目/etc/ssh/sshd_config以启用 CA 的使用

 # Allow access from signed keys
 TrustedUserCAKeys /etc/ssh/users_ca.pub

c. 验证 SSH 的配置,如果没有显示错误,则重新启动守护进程

sudo /usr/sbin/sshd -t -f /etc/ssh/sshd_config
sudo service ssh reload

3. 签名用户密钥

a. 获取CA私钥,该私钥将用于签署用户的公钥

b. 获取用户的公钥

c. 签署公钥:

ssh-keygen -s users_ca -I awesomeuser -n serveruser -V +1d userkey.pub

上面使用的开关ssh-keygen是:

  • -s users_ca- CA私钥
  • -I awesomeuser- 用户姓名
  • -n serveruser- 允许认证的用户名
  • - V +1d- 签署证书时指定有效期。有效期可能由单个时间组成,表示证书从现在开始有效并在该时间到期,也可能由两个时间组成,用冒号分隔以表示明确的时间间隔。开始时间可以指定为格式为日期YYYYMMDD、格式为时间YYYYMMDDHHMMSS或相对时间(相对于当前时间),由减号后跟相对时间组成,格式在 的时间格式 部分中描述sshd_config。结束时间可以指定为以加号开头的YYYYMMDD日期、时间YYYYMMDDHHMMSS或相对时间。例如:("+52w1d"从现在到 52 周零一天有效)、"-4w:+4w"(四周前到四周后有效)、"20100101123000:20110101123000"(从 2010 年 1 月 1 日下午 12:30 到 2011 年 1 月 1 日下午 12:30 有效)、"-1d:20110101"(从昨天到 2011 年 1 月 1 日午夜有效)。
  • userkey.pub- 用户的公钥

d. 当公钥被签名时,将生成 一个名为<old public key>-cert.pub(在上面的例子中,名称为 be )的新公钥。userkey-cert.pubSigned user key userkey-cert.pub: id "awesomeuser" serial 0 for serveruser valid from 2018-01-29T07:59:00 to 2018-01-30T08:00:53

e. 必须将新创建的公钥返回给用户。用户收到后,即可访问配置了 SSH CA 的服务器。

这应该可以帮你解决。

相关内容