无法导出或列出密钥

无法导出或列出密钥

我正在使用我的桌面从服务器获取文件(使用 git 和 rsync),现在我想使用我的笔记本并尝试导出/导入所需的 RSA 密钥。

从笔记本电脑到台式机的自动登录功能已启用并且运行正常。

编辑:具体说明:有桌面 (A) 可以连接到服务器 (B),无需任何密码。使用我的笔记本 (C),我可以连接到桌面 (A),但不能连接到服务器 (B)。

现在我想将桌面(A)的密钥导出到我的笔记本(C),以便我可以连接到服务器(B)。

在桌面(A)上,我看到了我想要的钥匙:

mario@desktop:~$ ssh-keygen -lf ~/.ssh/id_rsa.pub
4096 xx:xx:xx:yy:yy:yy:zz:zz:zz:xy:yz:xz:yx:zy:zx:xx  mario@desktop (RSA)

文件也在那里:

mario@desktop:~$ ls -l ~/.ssh/*
-rw-rw-r-- 1 mario mario 1147 Mai 30 12:48 /home/mario/.ssh/authorized_keys
-rw------- 1 mario mario 3243 Apr 11 16:30 /home/mario/.ssh/id_rsa
-rw-r--r-- 1 mario mario  741 Apr 11 16:30 /home/mario/.ssh/id_rsa.pub
-rw-r--r-- 1 mario mario  444 Apr 11 16:32 /home/mario/.ssh/known_hosts
-rw------- 1 mario mario 1766 Mai 15 12:35 /home/mario/.ssh/notebookID
-rw-r--r-- 1 mario mario  397 Mai 15 12:35 /home/mario/.ssh/notebookID.pub

奇怪的是这些命令根本没有任何输出:

mario@desktop:~$ gpg --list-keys
mario@desktop:~$ gpg --list-secret-keys 

我想知道,至少应该列出我的笔记本中的公钥。

尝试列出或导出密钥失败:

mario@desktop:~$ ssh-add -l
Could not open a connection to your authentication agent.
mario@desktop:~$ gpg --export --output public-keys.asc
gpg: WARNUNG: Nothing exported
mario@desktop:~$ gpg --export-secret-keys --output secret-keys.asc
gpg: WARNUNG: Nothing exported
mario@desktop:~$ gpg --export-secret-key secring.gpg
gpg: WARNUNG: Nothing exported

代理的工作原理:

mario@desktop:~$ ssh-agent 
SSH_AUTH_SOCK=/tmp/ssh-xxfgqbw7SnZe/agent.5801; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5802; export SSH_AGENT_PID;
echo Agent pid 5802;

第一个错误在网上搜索起来似乎很有希望。Stackoverflow 提供了一些答案:

使用 eval 建议的解决方案并没有真正改善情况:

mario@desktop:~$ eval $(ssh-agent)
Agent pid 5849
mario@desktop:~$ ssh-add -l
The agent has no identities.

我做错了什么……?我没有主意了。谢谢

答案1

首先,您混合了两个完全不相关的程序的命令。尽管它们都依赖于相同的加密算法,但 OpenSSH 和 GnuPG (PGP) 都有自己的密钥类型和独立的存储。

例外情况是,如果您使用 gpg-agent 的 SSH 代理模拟。但您没有使用它 – 您使用的是普通的 OpenSSH 代理。

所以gpg 不应该列出所有 SSH 密钥。只需使用 scp、sftp 等手动复制(及其关联的 .pub 文件).ssh/id_rsa.ssh/notebookID


其次,ssh-agent 与导出密钥无关。它可以将密钥保存在内存中,以便使用SSH 中保存它们,但不允许你将它们导出回来反正。(它也不会自动加载密钥,您每次都必须通过 ssh-add 来添加它们。)

所以在这种情况下你不需要需要 ssh-add -l列出任何内容,甚至工作。只需手动复制文件即可。

(再次强调,以上内容不一定适用于 gpg-agent 的“SSH 代理模拟”。)

相关内容