我在 Linode 和 Siteground 有多个远程服务器,带有ssh
连接、密码。我以前使用 Windows 和 Putty 连接到我的远程服务器,但现在
我开始使用 Ubuntu 18.04 并设置了 openssh-server 但现在当我尝试时出现错误 Permission Denied(Public key) 所以我猜测ssh [email protected]
我应该从本地计算机上的远程服务器复制私钥,但我不太确定将密钥准确放置在哪里以及如何添加它们以便我可以连接?
答案1
第一的不将您的私钥放在远程服务器上。任何破坏该服务器的人都将拥有您拥有的所有访问权限。
现在这已经不成问题了。你有两个选择。
- 在新的本地计算机上创建新的私钥。然后复制民众密钥(它与私钥一起提供,或者可以从私钥生成)。到服务器。如果进入
~/.ssh/authorized_keys
,则每行一个,所以追加它,不要覆盖旧的(或use ssh-copy-id
)。 - 在旧的本地机器上。使用 putty,告诉它以 open-ssh 格式导出您的私钥,然后将其复制到新的本地计算机(运行 openssh)。它进入
~/.ssh/
我的目录 fileid_rsa
。
答案2
笔记:您永远不想将私钥复制到远程服务器,您想将密钥对的公钥添加到远程服务器,以便可以验证您的私钥。
为了在远程服务器上引导帐户,我通常使用ssh-copy-id
这样做。
$ ssh-copy-id
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
-f: force mode -- copy keys without trying to check if they are already installed
-n: dry run -- no keys are actually copied
-h|-?: print this help
用法
$ ssh-copy-id -i /path/to/id_rsa.pub <user>@<server>
例子
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/local/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user1/.ssh/id_rsa.pub"
/usr/local/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/local/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
笔记:如果您发现需要跨多个服务器执行此操作,请参阅我的问答标题:如何将我的 SSH 公钥传播到服务器列表,而无需一遍又一遍地输入密码?。