我正在使用我的桌面从服务器获取文件(使用 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 提供了一些答案:
- https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
- https://unix.stackexchange.com/questions/48863/ssh-add-complains-could-not-open-a-connection-to-your-authentication-agent/48868
使用 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 代理模拟”。)