无需密码即可通过 SSH 进行 SCP - 无法正常工作

无需密码即可通过 SSH 进行 SCP - 无法正常工作

我有一台带有 SSH 的 Ubuntu 16.04 服务器,我已经配置了一个密钥对,因此我可以通过 SSH 连接到远程系统而无需密码,这可以正常工作。

我正在尝试从本地(系统 1)向远程(系统 2)进行 SCP,SCP 工作正常,但要求输入密码。我想使用密钥对进行非认证复制。

我已从网上查找了大量有关如何执行此操作的指南,但基本上可以归结为以下内容:

scp -i <path the PRIVATE key file>  filetocopy  [email protected]:~

我在互联网上找到的所有内容都表明这应该可行 - 但它一直要求输入远程(第二个)系统的密码,即使我知道密钥对可以正常工作,因为我可以将它用于 SSH。

令人恼火的是 - 如果以 root 身份运行,则与上述相同的命令将完美运行,无需密码请求 - 无论是通过“sudo”还是从提升的终端...

所以:

sudo scp -i <path the PRIVATE key file>  filetocopy  [email protected]:~

工作正常,但是:

scp -i <path the PRIVATE key file>  filetocopy  [email protected]:~

才不是。

根目录的 .ssh 文件夹中除了 known_hosts 文件之外没有其他文件(即没有密钥文件)

我应该怎么办?

答案1

看起来您已将root密钥复制到远程服务器,但普通用户密钥并未正确复制。

sshscp应提供相同的反馈(登录到远程服务器与将文件复制到远程服务器的区别)

当密钥对根据需要复制到远程服务器时,命令scp将是:

scp local-file-name user@remote-host:/full/path/remote-file-name

为了将用户密钥复制到远程服务器,你可以使用 ssh-复制-id

注意:您应该更换我的钥匙在下面的命令中,使用你的密钥文件的文件名

将密钥复制到服务器

创建 SSH 密钥后,可以使用 ssh-copy-id 命令将其安装为服务器上的授权密钥。密钥获得 SSH 授权后,无需密码即可访问服务器。

使用以下命令复制 SSH 密钥:

ssh-copy-id -i ~/.ssh/mykey user@host

这将登录到服务器主机,并将密钥复制到服务器,并通过将它们添加到 authorized_keys 文件中来配置它们以授予访问权限。复制可能会要求输入服务器的密码或其他身份验证。

仅将公钥复制到服务器。私钥绝不能复制到另一台机器。

测试新密钥

一旦密钥被复制,最好对其进行测试:

ssh -i ~/.ssh/mykey user@host

现在登录应该可以完成,无需输入密码。但请注意,该命令可能会要求输入您为密钥指定的密码。故障排除

答案2

您必须执行以下几件事才能通过 ssh 执行无需密码的 scp:

ssh-keygen
[Enter]
[Enter]
[Enter]
cd ~/.ssh
ssh-copy-id -i id_rsa.pub username@serverip/hostname
scp username@serverip:/file/to/copy /directory/to/save

这将起作用,如果您遇到任何错误,请更新。

答案3

我已将其整理好 - 我从两个系统中删除了所有密钥和密钥文件,并完成了设置新密钥文件的过程,并使用 ssh-copy-id 复制了文件。现在运行良好。

authorizes_keys 文件中肯定存在一些不为人知的损坏,可能会造成混乱。再次感谢。

相关内容