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


1

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

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

ls -la和pwd在该导演中的输出是多少?
伊莱亚斯

你用什么命令来生成密钥?如果你使用sudo ssh-keygen它将最终进入root主目录,而不是你的用户。如果您想为用户提供密钥,请单独使用ssh-keygen
鲍勃

你为什么使用sudo?
djsmiley2k

@bob感谢anwser。我确实使用过sudo。
melkawakibi

@bob所以我在root权限中有一个ssh密钥。如果我想删除ssh密钥怎么办?
melkawakibi

Answers:


1

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

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

如果您生成了密钥ssh-keygen,则会将密钥放入~当前用户。既然你当前的用户就是,那么一切都很好。

如果您生成了密钥sudo ssh-keygen,则表示用户身份ssh-keygen运行,因此您的密钥实际位于主目录下(或默认情况下)。rootroot~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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.