ChatGPT解决这个技术问题 Extra ChatGPT

scp(安全复制)到没有密码的 ec2 实例

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

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

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

Password:

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

您是否为用户和主机使用完全相同的标识符?
我不确定我理解你所说的标识符是什么意思,你能解释一下吗?
如果一个连接使用 IP 地址,而另一个连接使用名称,它将无法正常工作。我刚刚看到您使用 -i 选项来提供您的身份。可能您还应该显示用于使用 ssh 登录的命令。
谢谢林奇,想通了!

W
Westy92

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

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

谁知道如何通过 ssh 连接到 ec2,只需将 ssh 命令更改为 scp 并在 pem 文件后添加名称文件。
由于这个答案有点老了,我的新 EC2 实例中的一个更新示例: scp -i kp1.pem ./file.txt ec2-user@1.2.3.4:/home/ec2-user
@siliconrockstar 您的声明 ec2-user@1.2.3.4:/home/ec2-user 很容易被更短更简单的 ec2-user@1.2.3.4:./ ./ FTW 替换!
一个非常晚的评论,但是如果您使用的是非标准端口,@ClaudioSantos 的建议并不完全有效。它是 ssh 的 -p 和 scp 的 -P。
我可以使用我的 *.PEM 文件通过 ssh 进入 ec2。但是,当我想用它来 SCP 文件时,它给了我“权限被拒绝”错误!我该如何解决这个问题?
S
Syed Priom
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

(-r) 参数不是必需的,但需要从远程路径的末尾删除 (/)。你的例子对我有用,非常感谢
J
Jamil Noyda

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

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


R
Renato Coutinho

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

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

P
Pritam Banerjee

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

scp -i kp1.pem ./file.txt ec2-user@1.2.3.4:/home/ec2-user

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

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


Y
Yatender Singh

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

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

让我知道它是否不起作用


scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com:~/ ~/Desktop/ 如果您想将文件从服务器传输到本地
谢谢,我最后用 :/ “拒绝访问”,但用 :~/ 它可以工作
是的,因为 :/ 是根文件夹, :~/ 是用户文件夹,所以如果你是 root 用户,那么 :/ 或 :~/ 任何东西都可以工作,如果你不是 root 用户,那么只有 :~/ 你必须使用。
P
ProfGhost

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

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


f
fall14123

我的 hadoopec2cluster.pem 文件是我本地 Mac 上目录中唯一的一个,无法使用 scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~ 将其 scp 到 aws。

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


B
BuvinJ

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

scp -i [private key file path]

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


S
Shawn

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


m
mechnicov

要使用 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

庄景鹏

写这段代码

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

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


T
Tejas Tank

用于 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 地址连接


U
Unheilig

刚刚测试:

运行以下命令:

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

然后:

创建 ami(ec2 的图像)。从第 2 步的新 ami(图像)启动选择了新键。