GitLab Runner не будет подключаться к другому ec2 через scp ОШИБКА: debug1: read_passphrase: не может открыть / dev / tty: нет такого устройства или адреса - PullRequest
0 голосов
/ 14 марта 2020

В настоящее время я пытаюсь использовать файл порядка файлов изображений * gitlab docker для подключения к производственному серверу и перезаписи моего кода в рабочей среде при развертывании. Хотя я могу sh с моего локального компьютера с предоставленным закрытым ключом, всякий раз, когда я пытаюсь скопировать закрытый ключ как переменную и подключиться, я постоянно получаю ошибку:

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, я установил соответствующие разрешения с помощью chmod, а также пробовал несколько вариантов вызова сценария scp. В настоящее время я запускаю свое соединение в before_script моего файла gitlab.yml, чтобы избежать задержки создания изображений 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 определенным образом c? Если возможно, что эхо не сохраняет .pem как закрытый ключ. Мой IP-вход для экземпляра aws установлен для всех траффиков c на порту 22, и копирование этого ключа и подключение с моего P C работает нормально. У бегуна проблемы. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 17 марта 2020

Лучшее решение, которое я нашел для этого, это либо запустить образ ubuntu gitlab и вручную вызвать внутри него docker с томом, привязанным к s sh, либо использовать экземпляр aws с паролем для секретов gitlab, если Вы жестоко на Dind изображения в Gitlab. Ни один из них не является по-настоящему оптимальным, но из-за эффективности контейнеризации в изоляции вы должны решить ее одним из двух методов.

...