使用SSH密钥与SCP和SSH

56

我正在尝试使用scp将几个文件复制到目标系统,然后登录该系统并安装这些文件。我在此处使用了scp和ssh命令,并使用ssh密钥进行无密码身份验证。

ssh密钥如下在源系统上创建。这是创建ssh密钥的正确且安全的方式吗?

~]# ssh-keygen -t rsa -N "" -f ~/.ssh/mytest.key

使用以下命令,将密钥从源系统复制到目标系统。

~]# ssh-copy-id -i ~/.ssh/mytest.key 

现在,SSH登录正常,无需提示密码,但scp仍然无法使用..它仍然提示输入密码。我应该在使用scp时指定密钥路径吗?如果需要,我如何在scp命令中指定密钥路径?

这是使用的SSH命令:

~]# ssh -i ~/.ssh/mytest.key root@192.168.1.1
5个回答

119
假设您的情况是从192.168.1.1进行scp操作,请尝试以下命令。
scp -i ~/.ssh/mytest.key root@192.168.1.1:/<filepath on host> <path on client>

确保密钥文件的权限设置为600或400。

我该如何跳过已经存在的文件? - Trevor Nathan
1
如果想跳过已经存在的文件,scp会覆盖该文件。我认为rsync会起作用,请参考https://unix.stackexchange.com/questions/127352/specify-identity-file-id-rsa-with-rsync 这可能会有帮助。 - Mahattam
2
八年时间和一百个用户应该足以发现这将复制文件而不是“到目标系统” :) - mirekphd

3
您也可以按照以下步骤操作:
  1. 使用以下命令生成ssh密钥
~]$ ssh-keygen
它会要求您提供文件名、文件位置、密码等详细信息。
第2步,请确保将位置和文件名保持为默认设置,即:
/home/user/.ssh/rsa_id

确认口令后,将创建私钥和公钥文件。

  1. 在与步骤2相同的.ssh文件夹中创建名为authorized_keys的文件。将公钥内容复制到此文件中。

完成了!对于ssh和scp,唯一需要的密码是您的口令(如果您设置了)。


0
只要按照以下步骤操作,就能成功:

只需这样做:

chmod 400 keyfile.pem

scp -i /path/to/key.pem file-name user@server-ip:/path/to/user/home

0

复制 SSH 密钥的另一种选项:

ssh-copy-id root@192.168.1.1

然后你可以使用scp:

scp ./file root@192.168.1.1:/path_on_host/

结果:

 [file] -transfer-> [192.168.1.1:/path_on_host/]

-1

首先,在进行scp之前,更改远程文件的chmod....

sudo chmod 775 '文件名'


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接