Bash 服务器在尝试scp时给了我一个权限错误,但在ssh时没有

Bash 服务器在尝试scp时给了我一个权限错误,但在ssh时没有,bash,ssh,terminal,scp,Bash,Ssh,Terminal,Scp,要将scp连接到服务器时,是否需要设置服务器配置?如果我ssh到机器中,我使用: ssh -i file.pem user@server 但是当我尝试scp命令时,它会给我一个权限错误 scp path/to/file.pdf -i file.pem user@server:/home/user/. 我做错了什么?我该如何修复它?我似乎想不出是怎么回事。错误内容如下: 权限被拒绝(公钥)。 断开连接您需要重新选择选项和参数。应该是: scp -i file.pem path/to/file.

要将scp连接到服务器时,是否需要设置服务器配置?如果我ssh到机器中,我使用:

ssh -i file.pem user@server
但是当我尝试scp命令时,它会给我一个权限错误

scp path/to/file.pdf -i file.pem user@server:/home/user/.
我做错了什么?我该如何修复它?我似乎想不出是怎么回事。错误内容如下:
权限被拒绝(公钥)。

断开连接

您需要重新选择选项和参数。应该是:

scp -i file.pem path/to/file.pdf user@server:/home/user
请注意,目标路径末尾省略了
/。
。这是不必要的,因为如果目标的最后一段是dir,它会将文件复制到目录中,就像
cp
mv
一样

有没有一种方法可以分配file.pem,这样当我使用:user时它就可以拾取它

您可以使用
~/.ssh/config
config文件执行此操作:

Host            serveralias
HostName        server.com
User            user
IdentityFile    /path/to/your/key.pem
创建后,您可以执行以下操作:

# will effectively be like doing 
# ssh -i /path/to/your/key.pem user@server.com
ssh serveralias


它们都应该使用您指定的identity文件。

您是否尝试在其他参数之前移动identity开关?您也不应该需要尾随的
如果目标的最后一段是dir,它会将文件复制到目录:
scp-i file.pem path/to/file.pdfuser@server:/home/user
您也可以使用
-vvv
获取更多详细信息,了解正在发生的事情。宾果!就这样!你需要把-i file.pem放在其他所有东西之前。我有一个快速的后续问题。为什么我不需要这样做与我的常规服务器与这一个?通常我会:
sshuser@server
有没有办法分配
文件.pem
,这样它在我使用:
user
?是的,你可以把它放在你的
~/.ssh/config
中,我会定期访问所有服务器。我的配置中似乎没有任何涉及pem的内容,除非您正在谈论将.pem附加到已知的主机?或者我只是将它们全部附加到
config
文件中,并使用与服务器相关的分隔符分隔。我的想法是在
known\u hosts
中执行一些操作,例如:
host:server ssh\u rsa data\u goes\u here
查看我更新答案中的示例。每个
User@HostName
组合。然后它将使用匹配的值作为连接的选项。
Host
字段本质上是一个别名,因此您可以只执行
ssh生产
ssh网关
之类的操作。
# should pick up on the same settings and effectively like 
# ssh -i /path/to/your/key.pem user@server.com
ssh user@server.com