【问题标题】:How to copy properly a file from a linux instance to an aws ec2 instance?如何将文件从 linux 实例正确复制到 aws ec2 实例?
【发布时间】:2019-09-25 11:52:11
【问题描述】:

我正在尝试使用在 linux 机器上运行的 jenkins 将一些文件从 linux 服务器复制到 ec2 实例,但遇到以下问题:

debug1: read_passphrase: can't open /dev/tty: No such file or directory
Host key verification failed.
lost connection

我使用的复制命令: sh 'scp -v -i /path/key.pem /path_to_my_file/file.txt user@host:/path_to_target'

【问题讨论】:

  • 管道运行的Jenkins服务账号默认没有配置shell。这似乎是您的pem 无法在管道中验证的根本原因。您可能需要以不同的方式处理这个问题,或者解决它。

标签: linux amazon-web-services jenkins amazon-ec2 jenkins-pipeline


【解决方案1】:

您似乎正在使用带有密码短语加密的私钥文件的 scp publickey 身份验证。 Jenkins 脚本没有通过阶段。

从私钥文件中删除密码保护,或手动将密钥预加载到 ssh-agent 中,

https://serverfault.com/questions/622767/scp-inside-sh-script-with-passphrase/622799

【讨论】:

  • 解决了这个问题,但现在出现一个错误,告诉我我没有在目标文件夹中复制的权限。你知道为什么吗?
  • 用户根本没有远程文件夹的正确权限。检查home/user/path_to_target的权限
  • 当您的目标目录不是用户主目录/home/<user>/~ 的子目录时,您会看到此错误。例如,如果您尝试将文件复制到 Linux 根目录 / 或其子目录之一。在这种情况下,要么将目标目录移动到用户的主目录下,要么将现有目标目录的所有权从root 更改为<user>。如果您的目标目录恰好是/bin/boot/dev/etc 等系统目录之一,则应使用后一种方法。
【解决方案2】:

通常我们希望在~/.ssh/ 文件夹中输入密钥,但如果是 Jenkins,最好使用绝对路径。所以可能有两个原因

  • 没有选择正确的密钥,传递完整路径,如/absolute_path/key.pem
  • Host key verification failed 错误信息表示你的 SSH 客户端已比较接收到的远程服务器的公钥和 注意到它与存储的主机密钥版本不匹配 ~/.ssh/known_hosts 文件。

所以试试-o StrictHostKeyChecking=no

/cant-establish-ssh-connection

如果问题仍然存在,您可以发布完整的调试日志。

如果有权限问题,你应该复制到用户有权限的位置。

应该是这样的

scp -v -i /path/key.pem /path_to_my_file/file.txt user@host:/home/user/path_to_target'

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多