我想要做的是将密钥复制到另一台主机.
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密钥,而你只有私钥)...
这是答案:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
该-y选项是特灵的命令ssh-keygen输出您的公钥.
这将重新生成该对的.pub部分.正如OP指出的那样,如果你只是生成一对新的,并替换旧的私钥,你将无法访问已经提供公钥的任何服务器.当然,您可以通过为这些服务器提供新公钥的过程,但为什么要轻松避免这种麻烦呢?
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 目录中已存在包含其他客户端公钥的文件,则需要将公钥附加到该文件中。