GitLab Runner won't connect to other ec2, via scp ERROR: debug1: read_passphrase: can't open /dev/tty: No such device or address
GitLab Runner won't connect to other ec2, via scp ERROR: debug1: read_passphrase: can't open /dev/tty: No such device or address
目前,我正在尝试使用 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 地址在两台机器上都存在,并且我的 .pem 可以在 gitlab runner post 复制上正确读取,我已经使用 chmod 和建立了适当的权限还尝试了调用 scp 脚本的多种排列。我目前 运行 我的连接在我的 gitlab.yml 文件的 before_script 中,以避免在我的文件中构建 docker 图像的延迟,相关部分包含在下面。
编辑:/dev/tty 也有正确的权限,我查看了之前与此问题相关的堆栈溢出 post,但它们与问题或不是解决方案
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:.
抱歉,如果感觉很愚蠢,但我对从另一台机器设置私钥的技术性质几乎没有经验,目前我不确定是否需要 link 我的 gitlab runner 中的私钥具体方法?如果 echo 可能没有将 .pem 保存为私钥。我的 aws 实例入站 IP 设置为端口 22 上的所有流量,复制此密钥并从我的 PC 连接工作正常。只是跑步者有问题。感谢您的帮助!
我发现的最佳解决方案是 运行 一个 ubuntu gitlab-image 并在其中手动调用 docker 并使用绑定到 ssh 的卷或使用 aws 实例如果您对 gitlab 中的 dind 图像感到吃力,请使用 gitlab secrets 的密码。两者都不是真正的最佳选择,但由于容器化在隔离方面的有效性,您必须使用两种方法之一来解决它。
目前,我正在尝试使用 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 地址在两台机器上都存在,并且我的 .pem 可以在 gitlab runner post 复制上正确读取,我已经使用 chmod 和建立了适当的权限还尝试了调用 scp 脚本的多种排列。我目前 运行 我的连接在我的 gitlab.yml 文件的 before_script 中,以避免在我的文件中构建 docker 图像的延迟,相关部分包含在下面。
编辑:/dev/tty 也有正确的权限,我查看了之前与此问题相关的堆栈溢出 post,但它们与问题或不是解决方案
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:.
抱歉,如果感觉很愚蠢,但我对从另一台机器设置私钥的技术性质几乎没有经验,目前我不确定是否需要 link 我的 gitlab runner 中的私钥具体方法?如果 echo 可能没有将 .pem 保存为私钥。我的 aws 实例入站 IP 设置为端口 22 上的所有流量,复制此密钥并从我的 PC 连接工作正常。只是跑步者有问题。感谢您的帮助!
我发现的最佳解决方案是 运行 一个 ubuntu gitlab-image 并在其中手动调用 docker 并使用绑定到 ssh 的卷或使用 aws 实例如果您对 gitlab 中的 dind 图像感到吃力,请使用 gitlab secrets 的密码。两者都不是真正的最佳选择,但由于容器化在隔离方面的有效性,您必须使用两种方法之一来解决它。