scp(安全副本)到ec2实例,无需密码


404

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

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

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

Password:

有什么想法为什么会发生/如何预防?


您是否为用户和主机使用相同的标识符?
林奇

我不确定我是否理解标识符的含义,您能解释一下吗?
霍夫

如果对于一个连接,您使用一个IP地址,而对于另一个连接,您使用一个名称,则它将不起作用。我刚刚看到您使用-i选项提供身份。可能是您还应该显示用于通过ssh登录的命令。
林奇

谢谢林奇,想通了!
霍夫

Answers:


804

我想到了。我的论点顺序错误。这有效:

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

14
从谁了解如何通过ssh连接到ec2的角度来看,只需将ssh命令更改为scp并将名称文件添加到pem文件之后即可。
Claudio Santos

11
由于此答案有点旧,因此,在我的新EC2实例中,有一个最近的示例:scp -i kp1.pem ./file.txt ec2-user@1.2.3.4:/ home / ec2-user
Siliconrockstar 2015年

1
@siliconrockstar您的陈述ec2-user@1.2.3.4:/home/ec2-user很容易用更短,更轻松的ec2-user@1.2.3.4:./ ./FTW 代替!
布罗克

2
一个很晚的评论,但是如果您使用的是非标准端口,@ ClaudioSantos的建议将无法正常工作。对于ssh是-p,对于scp是-P。
Inukshuk

1
我可以使用* .PEM文件将其SSH到ec2中。但是,当我想将其用于SCP文件时,它会显示“权限被拒绝”错误!我该如何解决?
AleX_

58
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

(-r)参数不是必需的,但需要从远程路径的末尾删除(/)。您的榜样对我有用,非常感谢
Abbas

35

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

scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user


19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

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


14

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

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用于identity_file


8

假设您要发送的pem文件和somefile.txt位于“下载”文件夹中

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

让我知道是否无效


scp -i /用户/用户名/下载/myfile.pem -r ubuntu@my.ect.id.amazonaws.com:〜/〜/ Desktop /以防您要将文件从服务器传输到本地
Yatender Singh

2
谢谢,最后我得到了“访问被拒绝”,:/但是:~/可以正常工作
cardamom

是的,因为:/是根文件夹,而:〜/是用户文件夹,所以如果您是root用户,则:/或:〜/都可以使用,如果您不是root用户,则只能使用:〜/。
Yatender Singh'7

3

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

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


2

我的hadoopec2cluster.pem文件是本地Mac上目录中的唯一文件,无法使用来将其发送给AWS scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~

将hadoopec2cluster.pem复制到hadoopec2cluster_2.pem,然后复制scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~。瞧!


2

我之所以挂了电话,是因为我在中指定了我的公钥文件

scp -i [private key file path]

当我发现该错误并将其更改为私钥路径时,一切就绪。


2

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


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

0

编写这段代码

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

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


-6

刚刚测试:

运行以下命令:

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

然后:

  1. 创建ami(ec2的图像)。
  2. 从第2步的新ami(image)启动,选择了新密钥。
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.