467

我有一个 EC2 实例正在运行(FreeBSD 9 AMI ami-8cce3fe5),我可以使用我的亚马逊创建的密钥文件 ssh 进入它,而无需密码提示,没问题。

但是,当我想使用 scp 将文件复制到实例时,系统会要求我输入密码:

scp somefile.txt -i mykey.pem root@my.ec2.id.amazonaws.com:/

Password:

任何想法为什么会发生这种情况/如何预防?

4

15 回答 15

922

I figured it out. I had the arguments in the wrong order. This works:

scp -i mykey.pem somefile.txt root@my.ec2.id.amazonaws.com:/
于 2011-07-02T16:19:44.147 回答
67
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
于 2014-04-10T10:24:44.183 回答
50

将文件从本地服务器复制到远程服务器

sudo scp -i my-pem-file.pem ./source/test.txt ec2-user@1.2.3.4:~/destination/

将文件从远程服务器复制到本地计算机

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/source/of/remote/test.txt ./where/to/put

所以基本的语法是: -

scp -i my-pem-file.pem username@source:/location/to/file username@destination:/where/to/put

-i用于身份文件

于 2019-11-19T06:49:41.510 回答
40

我使用以下命令从本地 linux Centos 7 复制到 AWS EC2。

scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user
于 2018-04-26T17:41:22.797 回答
21

siliconerockstar的评论成为答案,因为它对我有用

scp -i kp1.pem ./file.txt ec2-user@1.2.3.4:/home/ec2-user
于 2016-03-25T15:08:06.760 回答
19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

文件名不应该在 pem 文件和 ec2-user 字符串之间 - 这不起作用。这也允许您保留复制文件的名称。

于 2016-10-07T03:45:19.507 回答
8

假设您要发送的 pem 文件和 somefile.txt 位于 Downloads 文件夹中

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt root@my.ec2.id.amazonaws.com:~/

让我知道它是否不起作用

于 2016-02-19T10:36:34.527 回答
3

scp -i /home/barkat/Downloads/LamppServer.pem lampp_x64_12.04.tar.gz

这将对你们所有人都非常有帮助

于 2013-10-28T09:38:56.937 回答
2

My hadoopec2cluster.pem file was the only one in the directory on my local mac, couldn't scp it to aws using scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~.

Copied hadoopec2cluster.pem to hadoopec2cluster_2.pem and then scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Voila!

于 2015-05-01T21:59:12.360 回答
2

在您的情况下,用户root不会有任何问题。但是在某些情况下,您需要以不同的用户身份在 SSH 下登录,请确保您正在使用的目录scp对您正在使用 SSH 的用户具有足够的权限。

于 2018-05-02T17:27:24.490 回答
2

我被挂断了,因为我正在指定我的公钥文件

scp -i [private key file path]

当我发现这个错误并将其更改为私钥路径时,我已经准备好了。

于 2015-07-24T15:10:26.010 回答
1

要使用 PSCP,您需要在使用 PuTTYgen 转换您的私钥中生成的私钥。您还需要 Linux 实例的公共 DNS 地址

pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt ec2-user@public_dns:/home/ec2-user/Sample_file.txt
于 2019-05-02T16:37:05.993 回答
0

写这段代码

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/root/

如果您有一个可以访问目标服务器的 SSH 密钥而源服务器没有,添加 -o "ForwardAgent=yes" 将允许您将 SSH 代理转发到源服务器,以便它可以使用您的 SSH 密钥连接到目标服务器。

于 2016-09-23T03:15:23.480 回答
0

用于 ec2 服务器

#将您的密钥移动到 /tmp 或服务器上的正确文件夹

分配正确的权限

sudo chmod 600 /tmp/dev-sunrobotics-snippetbucketcom.pem

比连接到服务器或传输

scp -i /tmp/dev-snippetbucketcom.pem filestore.tar.gz ubuntu@9.911.99.91:/tmp

确保在您的 ip 安全中您允许 ip 地址连接

于 2022-02-08T04:16:58.870 回答
-6

刚刚测试:

运行以下命令:

sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub

然后:

  1. 创建 ami(ec2 的图像)。
  2. 从第 2 步的新 ami(图像)启动选择了新键。
于 2017-01-28T00:42:53.423 回答