有没有办法判断我的密钥对是否是 OpenSSH 密钥对?

有没有办法判断我的密钥对是否是 OpenSSH 密钥对?

我们的 Oracle 服务正在将服务器迁移到 Oracle Cloud。我们需要更改 SFTP 访问的主机。“如果您当前的 SSH2 密钥是 OpenSSH 密钥,则通过您的 SCP 登录名和 SSH2 密钥进行的身份验证将保持不变。”

尽管迁移尚未发生,我们仍能够连接到新主机。我想确认我的密钥对是 OpenSSH 格式。有办法吗?

答案1

假设问题是关于私钥文件的:如果你可以用它使用 OpenSSHsshsftp客户端,那么它就是“OpenSSH 密钥”——服务器无法真正分辨出区别。

格式只有在以下情况下才重要安装服务器上的公钥(即将其添加到 OpenSSHauthorized_keys或类似程序时),但从引用的消息来看,这似乎之前已经完成了(即将现有密钥结转),所以这可能不是这里需要担心的问题。

关键的文件SSH2 使用的格式;但是,它们仅在“打包”方面有所不同 - 存储在其中的实际数据是相同的,因此完全相同的密钥可以在 OpenSSH 和 PuTTY 以及 PKCS#8 和 SSH.COM 格式之间自由转换。

具体来说,服务器无法知道您是否拥有“OpenSSH 密钥”。SSH 客户端通过网络发送的内容始终以标准格式发送(并且只发送公钥);SSH 客户端加载它使用的任何密钥文件格式,并在身份验证期间自动生成要发送到服务器的正确网络格式。

SSH 软件使用的密钥格式大部分都是文本格式,因此可以用记事本打开:

  • 一行以“-”开头的长行,即ssh-XXX AAAAxxxxx...OpenSSH 公钥。
  • -----BEGIN OPENSSH PRIVATE KEY-----以– OpenSSH 私钥开头(通常称为“新格式”或“OpenSSH 格式”)。
  • -----BEGIN PRIVATE KEY-----以– PKCS#8 私钥开头,由旧版 OpenSSH 创建(通常称为“PEM 格式”或“OpenSSL 格式”)。
  • -----BEGIN ENCRYPTED PRIVATE KEY-----– 开头,也是 PKCS#8,但带有密码。
  • 以 PKCS#1 私钥开头-----BEGIN RSA PRIVATE KEY-----,类似于 PKCS#8,但更旧。(同样通常称为“PEM 格式”,来自 OpenSSL。)
  • PuTTY-User-Key-File-2以PuTTY 私钥开始。
  • ---- END SSH2 PUBLIC KEY ----以SSH.COM 公钥开头。(这是一款商业 SSHv2 客户端/服务器产品,喜欢宣称自己是“唯一”的 SSH。)
  • ---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----以SSH.COM 私钥开头。

几乎总是,可以使用puttygenssh-keygen命令的某种组合将密钥从一种格式转换为另一种格式。

相关内容