我们的 Oracle 服务正在将服务器迁移到 Oracle Cloud。我们需要更改 SFTP 访问的主机。“如果您当前的 SSH2 密钥是 OpenSSH 密钥,则通过您的 SCP 登录名和 SSH2 密钥进行的身份验证将保持不变。”
尽管迁移尚未发生,我们仍能够连接到新主机。我想确认我的密钥对是 OpenSSH 格式。有办法吗?
答案1
假设问题是关于私钥文件的:如果你可以用它使用 OpenSSHssh
和sftp
客户端,那么它就是“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 私钥开头。
几乎总是,可以使用puttygen
或ssh-keygen
命令的某种组合将密钥从一种格式转换为另一种格式。