如何使用证书颁发机构通过 SSH 提供临时访问权限?

mit*_*rma 6 linux ssh linux-networking ssh-keys certificate-authority

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助指导这个过程,似乎出了一些小问题,我无法弄清楚?

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

提前致谢

13d*_*tar 8

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

1.创建SSH用户CA密钥对

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

2. 在服务器上配置 SSH Trust 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
Run Code Online (Sandbox Code Playgroud)

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

sudo /usr/sbin/sshd -t -f /etc/ssh/sshd_config
sudo service ssh reload
Run Code Online (Sandbox Code Playgroud)

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分到1月1日中午12点30分,2011),"-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 的服务器。

这应该适合你。