我一直试图在Java应用程序中以编程方式生成OpenSSH主机密钥,但是我无法获得OpenSSH v1密钥格式的有效Ed25519密钥。我当前的想法是OpenSSHPrivateKeyUtil存在问题,但是我不确定如何验证这一点。这是我目前的尝试:
import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters;
import org.bouncycastle.crypto.util.OpenSSHPrivateKeyUtil;
import java.util.Base64;
...
Ed25519PrivateKeyParamters keyParamters = new Ed25519PrivateKeyParamters(new SecureRandom());
byte[] encodedPrivateKey = OpenSSHPrivateKeyUtil.encodePrivateKey(keyParameters);
System.out.println(Base64.getEncoder().encodeToString(encodedPrivateKey));
输出看起来像我期望的(类似于ssh-keygen -t ed25519的结果),但是当我将结果放入/ etc / ssh / sshd_host_ed25519_key(以及将相应的公钥放入/ etc / ssh / sshd_host_ed25519_key.pub),我在/ var / log / messages中从sshd收到以下错误:
auth.err: error: Could not load host key: /etc/ssh/sshd_host_ed25519_key
我正在使用以下内容:
谢谢您的任何帮助。