Deployment GitLab Runner赢得';t通过scp连接到其他ec2错误:debug1:read_passphrase:can';t open/dev/tty:没有这样的设备或地址

Deployment GitLab Runner赢得';t通过scp连接到其他ec2错误:debug1:read_passphrase:can';t open/dev/tty:没有这样的设备或地址,deployment,gitlab,gitlab-ci,gitlab-ci-runner,Deployment,Gitlab,Gitlab Ci,Gitlab Ci Runner,目前,我正在尝试使用docker映像gitlab文件连接到我的生产服务器,并在部署时覆盖生产服务器中的代码。虽然我可以使用给定的私钥从本地计算机进行ssh,但每当我尝试将私钥复制为变量并连接时,我始终会遇到以下错误: debug1: expecting SSH2_MSG_KEX_ECDH_REPLY ... debug1: read_passphrase: can't open /dev/tty: No such device or address Host key verification

目前,我正在尝试使用docker映像gitlab文件连接到我的生产服务器,并在部署时覆盖生产服务器中的代码。虽然我可以使用给定的私钥从本地计算机进行ssh,但每当我尝试将私钥复制为变量并连接时,我始终会遇到以下错误:

debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
...
debug1: read_passphrase: can't open /dev/tty: No such device or address
 Host key verification failed.
 lost connection
我已经验证了两台计算机上都存在/dev/tty地址,并且可以在gitlab runner复制后正确读取my.pem,我已经使用chmod建立了适当的权限,还尝试了多次调用scp脚本的排列。我目前正在gitlab.yml文件的before_脚本中运行连接,以避免延迟在我的文件中构建docker映像,相关部分如下所示

编辑:/dev/tty也有正确的权限,我已经查看了以前与此问题相关的堆栈溢出帖子,它们要么与问题无关,要么不是解决方案

image: docker:19.03.5

services:
    - docker:19.03.1-dind

before_script:
    - docker info
    - apk update
    - apk add --no-cache openssh
    - touch $SSH_KEY_NAME
    - echo "$SSH_KEY" > "./$SSH_KEY_NAME"
    - chmod 700 $SSH_KEY_NAME
    - ls -la /dev/tty
    - scp -v -P 22 $SSH_KEY_NAME -i $SSH_KEY_NAME $PROD_USER@$SERVER_URL:.

如果感觉很愚蠢,我很抱歉,但我对从另一台机器设置私钥的技术性质几乎没有经验,目前我不确定是否需要以特定的方式在gitlab runner中链接私钥?如果echo可能没有将.pem保存为私钥。aws实例的“我的IP入站”已为端口22上的所有流量设置,复制此密钥并从我的PC连接可以正常工作。只有跑步者有问题。谢谢你的帮助

我找到的最佳解决方案是运行ubuntu gitlab映像并使用绑定到ssh的卷手动调用其中的docker,或者如果在gitlab中硬按dind映像,则使用带有gitlab机密密码的aws实例。这两种方法都不是最佳的,但由于集装箱化的有效性,您必须使用两种方法中的一种来解决它