【问题标题】:Server gives me a permission error when trying to scp, but not when ssh服务器在尝试 scp 时给了我一个权限错误,但在 ssh 时却没有
【发布时间】:2015-04-16 11:31:51
【问题描述】:

当您想要 scp 到服务器时,是否需要设置服务器配置?如果我 ssh 进入机器,我使用:

ssh -i file.pem user@server

但是当我尝试 scp 命令时,它会给我一个权限错误。

scp path/to/file.pdf -i file.pem user@server:/home/user/.

我做错了什么,我该如何解决?我似乎无法弄清楚它是怎么回事。错误内容为:
Permission denied (publickey). lost connection

【问题讨论】:

  • 您是否尝试在其他 args 之前移动标识开关,如果目标的最后一个段是目录,您也不应该需要尾随 .,它会将文件复制到目录中:scp -i file.pem path/to/file.pdf user@server:/home/user您也可以使用-vvv 来获取更多关于正在发生的事情的详细信息。
  • 宾果游戏!而已!您需要将 -i file.pem 放在其他所有内容之前

标签: bash ssh terminal scp


【解决方案1】:

您需要调整您的选项和论点。应该是:

scp -i file.pem path/to/file.pdf user@server:/home/user

注意在目标路径末尾省略了/.。没有必要,因为如果目标的最后一个段是目录,它会将文件复制到目录中,就像 cpmv 一样。

有没有办法分配 file.pem 以便它在我使用时拾取它:用户

您可以使用~/.ssh/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

或者

# should pick up on the same settings and effectively like 
# ssh -i /path/to/your/key.pem user@server.com
ssh user@server.com

它们都应该使用您指定的 IdentityFile。

【讨论】:

  • 我有一个快速跟进的问题。为什么我不需要用我的常规服务器和这个服务器来做这个?通常我会这样做:ssh user@server 有没有办法分配file.pem,这样当我使用它时它就可以拾取它:user
  • 是的,你可以把它放在你的~/.ssh/config 中,我对我定期访问的所有服务器都这样做。
  • 我的配置似乎没有任何涉及 pem 的内容,除非您正在谈论将 .pems 附加到 known_hosts ?或者我只是将它们全部附加到 config 文件中,并带有与服务器分隔相关的分隔符
  • 我的想法是在known_hosts 中做一些事情,例如:host:server ssh_rsa data_goes_here
  • 查看我更新答案中的示例。对于每个 User@HostName 组合,您将拥有其中一个块。然后它将使用匹配的值作为连接的选项。 Host 字段本质上是一个别名,因此您可以执行 ssh productionssh gateway 之类的操作。
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
  • 1970-01-01
  • 2019-03-09
  • 2015-04-17
相关资源
最近更新 更多