我似乎无法复制公共 ssh 密钥

我似乎无法复制公共 ssh 密钥

我刚刚生成了一个 ssh 密钥,之后我尝试复制 id_rsa.pub,但它抛出一个错误,说目录不存在。有人能帮帮我吗?

user$ sudo pbcopy <~/.ssh/id_rsa.pub
-bash: /Users/user/.ssh/id_rsa.pub: No such file or directory

答案1

我怀疑您生成密钥的位置和您尝试加载密钥的位置不匹配。

当您运行命令时sudo pbcopy <~/.ssh/id_rsa.pub,发生的事情是您正在以(因为)的身份运行该pbcopy命令,但是该文件是由您当前用户下运行的当前提示符加载的,因此解析为您当前用户的主目录。rootsudobash~

如果您使用 生成密钥ssh-keygen,它会将密钥放入~当前用户的 中。由于您当前的用户是,一切都恰到好处。

如果你使用生成密钥sudo ssh-keygen,则意味着ssh-keygen运行作为root用户,因此您的密钥实际上位于root的主目录下(~root/.ssh/id_rsa.pub/root/.ssh/id_rsa.pub默认情况下)。

这里有两种可能的解决方案。选择哪一种取决于你想做什么:

  • 您可以使用以下命令为自己的用户生成密钥ssh-keygen 没有sudo这将使您的原始命令能够工作。

  • 或者,你可以将密钥保留在下面root,但这意味着你必须加载它需要 root 权限才能使用它。要使用 shell 重定向操作符,您需要以 身份运行整个 shell root,例如sudo sh -c 'pbcopy <~/.ssh/id_rsa.pub'

哪种解决方案更合适取决于您的要求以及您打算将来做什么。您以 身份运行的每个命令sudo都会看到 下的密钥root,而您以 身份运行的命令sudo将看到您当前用户下的密钥。例如,如果您运行ssh它将在 中查找~/.ssh当前用户的密钥,而将在中sudo ssh查找 的密钥。~/.sshroot

相关内容