在unix服务器中找不到id_rsa.pub.我可以再生吗?Id_sra(私钥)存在

Dar*_*s.V 5 ssh public-key

我想要做的是将密钥复制到另一台主机.

ssh-copy-id -i ~/.ssh/id_rsa user@host
Run Code Online (Sandbox Code Playgroud)

我收到错误:

/ usr/bin/ssh-copy-id:错误:无法打开ID文件'[homedir] .ssh/id_rsa.pub':

所以没有公钥.那它在哪里?我试着用命令

sudo find / -name id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

但它只发现了一个我在我的测试目录中通过实验生成的.我尝试从测试目录发送实验,但随后它无限地询问释义,并且在我不断粘贴时不发送.

所以有些不对劲.

我可以使用再生

ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

但后来它尝试使用〜./.ssh目录

并希望覆盖私有id_rsa密钥.我担心这可能会制造一些东西.

那么如何获取我的公钥文件?

ins*_*dnz 21

以防其他人来到这里寻找OP问题的答案......并直接回答这个问题(即,如何在缺少的情况下重新生成.pub密钥,而你只有私钥)...

这是答案:

从私钥重新生成.pub密钥

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

-y选项是特灵的命令ssh-keygen输出您的公钥.

这将重新生成该对的.pub部分.正如OP指出的那样,如果你只是生成一对新的,并替换旧的私钥,你将无法访问已经提供公钥的任何服务器.当然,您可以通过为这些服务器提供新公钥的过程,但为什么要轻松避免这种麻烦呢?

  • 这一定是公认的答案。公钥可能已经分发到多个服务器和存储库。 (2认同)

sa7*_*a77 2

RSA 密钥成对工作。您可以多次生成 ssh 私钥和公钥......它不会破坏任何内容。它只是用新生成的密钥替换旧的密钥。这只需要您将新生成的公钥 id_rsa.pub 复制到远程计算机的 ~/.ssh/authorized_keys 文件中,以便您使用 rsa 密钥访问安全 shell。

因此,在您家的 .ssh 目录中生成新的 rsa 密钥(您的旧密钥将被新密钥替换)并复制到远程主机的 .ssh 目录

cd /home/<your_username>/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub remote_username@host:~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

然后

ssh remote_username@host
Run Code Online (Sandbox Code Playgroud)

生成新密钥时将密码短语保留为空,除非您想在每次尝试建立 ssh 连接时输入密码短语。

注意:如果远程主机的 ~/.ssh 目录中已存在包含其他客户端公钥的文件,则需要将公钥附加到该文件中。