证书文件显示“通道 0 上的 PTY 分配请求失败”

证书文件显示“通道 0 上的 PTY 分配请求失败”

当我尝试使用包含公钥的受信任证书通过 ssh 连接时,TTY 分配出现问题。

如果我与用户执行经典的 ssh 访问,例如ssh -i test-key-for-vault -o IdentitiesOnly=yes -t bob@<server-ip>一切正常,但如果我尝试使用受信任的证书来执行此操作,例如通过在文件底部输入/etc/ssh/sshd_config(这是默认的)

TrustedUserCAKeys /etc/ssh/lgt-trusted-user-ca-keys.pem
  Match User bob
  AllowTcpForwarding yes
  PermitTTY yes
  AuthorizedPrincipalsFile /etc/ssh/bob_principals

然后使用命令

ssh -i test-key-for-vault-rsa -o CertificateFile=signed-cert-rsa.pub -o IdentitiesOnly=yes bob@<server-ip>

我可以登录,但看不到我的正常 shell(即它通常在命令行上显示的服务器名称和用户名bob@ip-xxx-xxx-xxx:/home/bob

如果我尝试强制分配-t

ssh -i test-key-for-vault-rsa -o CertificateFile=signed-cert-rsa.pub -o IdentitiesOnly=yes -t bob@<server-ip>

我明白了

PTY allocation request failed on channel 0

一些背景细节:

  • 我正在尝试使用 hashicorp/vault 作为“事实来源”来生成证书
  • 我在 ubuntu 22.04 服务器上使用 ssh
  • 我已经尝试了可以​​通过谷歌搜索找到的主要建议,例如:
    • 尝试输入PermitTTY yesPermitTTY no
    • 尝试输入指令none /dev/pts devpts defaults 0 0i /etc/fstab 并重新启动系统

有人有什么建议吗?我还可以做其他检查吗?

答案1

我发现错误不是出在服务器端,而是出在我生成证书的方式上。

例如,尝试手动生成签名的证书它是有效的!

我已经使用命令

ssh-keygen -s ca_ssh_key -I "$(date)" -n bob -V +1h test-key-for-vault-rsa.pub

生成有效签名。通过分析ssh-keygen -Lf testcert.pub,结果显示:

testcert.pub:
        Type: [email protected] user certificate
        Public key: ED25519-CERT SHA256:4VHKC6rJCp7/dI6MkL8vxUPAMEWyWEbJ4J3KgnrgT/Q
        Signing CA: RSA SHA256:ipiIb0Alzu1W38SiwvMWO6VEcYtBK6KgNHmRJcxcQiE (using rsa-sha2-256)
        Key ID: "vault-userpass-bob-e151ca0baac90a9eff748e8c90bf2fc543c03045b25846c9e09dca827ae04ff4"
        Serial: 4538299703429475958
        Valid: from 2023-06-02T12:24:09 to 2023-06-02T13:24:39
        Principals: 
                bob
        Critical Options: (none)
        Extensions: 
                permit-agent-forwarding
                permit-pty

带来了“扩展”的存在。

我使用的生成证书的工具没有包含此部分,这就是它不能按我预期工作的原因。

我希望它对其他人也有用。

相关内容