【问题标题】:scp command is not working for copying directory in linuxscp 命令不适用于在 linux 中复制目录
【发布时间】:2017-04-24 23:21:09
【问题描述】:

我正在尝试使用以下命令将选定的整个目录从节点 1 复制到另一个节点 2,但它会抛出错误。我可以登录到 node1,从 node1 我也可以登录到 node2,反之亦然。

Node1node2 相同

scp -r -i abc.pem user1@node1:/abc/abc1/* user2@node2:/abc/abc1/*

错误

权限被拒绝(公钥)。失去联系

【问题讨论】:

  • 您需要能够直接登录到 node2,因为 scp 通过您的本地系统中继。
  • 否则必须在node1上执行scp。并且也将密钥存储在那里。
  • @arkascha 是否有另一个命令可以直接将文件从节点 1 传输到节点 2?
  • 确保从 local 节点到 node2 的 SSH 可以正常工作,并且不要在 node2(目标)端的路径中添加星号(此外,在某些情况下,您' 需要引用星号或其他通配符,但在这里它可能没问题 - 运行带有 echo" 的命令,以便查看 shell 是否在你没有扩展你的 "" 时'没想到)。我可能会使用 -rpv 而不是 -r。
  • None 没有相同的要求。但是您可以 做的是:使用ssh 登录到node1,然后从那里登录到node2 并设置一个ssh 隧道,将node2 的ssh 服务器转发到node1 上的本地端口。手册页中描述了如何设置这样的隧道。然后你可以在你的本地系统上使用scp,并通过指定你设置隧道的端口从user1@node1复制到user2@node1,这样你的传输实际上是通过隧道传输到node2的。

标签: linux scp


【解决方案1】:

-3开关解决认证问题:

scp -3 -r -i abc.pem user1@node1:/abc/abc1/* user2@node2:/abc/abc1/*

这将从您的工作站对两台机器进行身份验证,并且是一种非常标准的做事方式,与其他黑客不同。

【讨论】:

    【解决方案2】:

    命令 scp user1@host1:file user2@host2: 尝试连接到 host1,然后从 host1 连接到 host2。您收到的错误消息表明您没有此连接的权限。

    一个简单的解决方法是通过本地主机传输来执行复制:

    ssh -i abc.pem user1@node1 tar c -C /abc/abc1 . | ssh -i abc.pem user2@node2 tar x -C /abc/abc1
    

    【讨论】:

    • 一点也不。 scp 不通过本地节点路由。他说他可以毫无问题地连接到 node1 和 node2。问题是 scp 正在隐式地尝试从 node1 连接到 node2。这是 rcp 也存在的经典问题。
    • 看来你是对的;我只是从来没有那样解释手册页。对此感到抱歉。
    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2021-05-02
    • 2016-12-02
    • 2011-12-16
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多