我正在尝试使用 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.pub
Signed 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 的服务器。
这应该可以帮你解决。