我在尝试从私钥生成公钥时遇到了一些困难,从命令行,密钥是用 openssh 生成的
(我知道这可能不太好,但无论如何)
这里有三个私钥文件。hp_blah_id_rsa、id_rsa、rodney
root@droplet-50-1:~/.ssh# ls -l
total 20
-rw------- 1 root root 1512 May 29 00:14 authorized_keys
-rw------- 1 root root 2602 May 28 23:15 hp_blah_id_rsa
-rw------- 1 root root 2602 May 28 23:28 id_rsa
-rw-r--r-- 1 root root 222 May 28 21:47 known_hosts
-rw------- 1 root root 2602 May 28 21:17 rodney
如您所见,那里没有.pub 文件。
这里的文件命令确认它们是私钥,而我无需对它们进行 cat !
root@droplet-50-1:~/.ssh# file hp_blah_id_rsa
hp_blah_id_rsa: OpenSSH private key
root@droplet-50-1:~/.ssh# file rodney
rodney: OpenSSH private key
root@droplet-50-1:~/.ssh# file id_rsa
id_rsa: OpenSSH private key
我想要 .pub 文件中可以从这些私钥派生出的公钥。
我看到了这个问题https://stackoverflow.com/questions/5244129/use-rsa-private-key-to-generate-public-key
其中提到openssl rsa -in mykey.pem -pubout > mykey.pub
但这对我来说不起作用例如
root@droplet-50-1:~/.ssh# openssl rsa -in id_rsa -pubout -out a.a
unable to load Private Key
140565827753280:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
答案1
假设私钥是,id_rsa
那么ssh-keygen -y -f id_rsa
将输出公钥,这样你就可以做到ssh-keygen -y -f id_rsa >id_rsa.pub