构buildDocker镜像时无法使用私钥进行SSH

在Docker镜像构build期间,我无法检出托pipe在GitHub上的私有git存储库。 SSH在详细模式下的错误是:

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to github.com [192.30.252.130] port 22. debug1: Connection established. debug1: permanently_set_uid: 0/0 debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_dsa type -1 debug1: identity file /root/.ssh/id_dsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ed25519 type -1 debug1: identity file /root/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 debug1: Remote protocol version 2.0, remote software version libssh-0.6.0 debug1: no match: libssh-0.6.0 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-sha1 none debug1: kex: client->server aes128-ctr hmac-sha1 none debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 debug1: read_passphrase: can't open /dev/tty: No such device or address Host key verification failed. 

/dev/tty设备似乎存在:

 total 4 drwxr-xr-x 4 root root 340 Jul 22 17:12 . drwxr-xr-x 130 root root 4096 Jul 22 17:12 .. lrwxrwxrwx 1 root root 13 Jul 22 17:12 fd -> /proc/self/fd crw-rw-rw- 1 root root 1, 7 Jul 22 17:12 full c--------- 1 root root 10, 229 Jul 22 17:12 fuse lrwxrwxrwx 1 root root 11 Jul 22 17:12 kcore -> /proc/kcore crw-rw-rw- 1 root root 1, 3 Jul 22 17:12 null lrwxrwxrwx 1 root root 8 Jul 22 17:12 ptmx -> pts/ptmx drwxr-xr-x 2 root root 0 Jul 22 17:12 pts crw-rw-rw- 1 root root 1, 8 Jul 22 17:12 random drwxrwxrwt 2 root root 40 Jul 22 17:12 shm lrwxrwxrwx 1 root root 15 Jul 22 17:12 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 Jul 22 17:12 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 Jul 22 17:12 stdout -> /proc/self/fd/1 crw-rw-rw- 1 root root 5, 0 Jul 22 17:12 tty crw-rw-rw- 1 root root 1, 9 Jul 22 17:12 urandom crw-rw-rw- 1 root root 1, 5 Jul 22 17:12 zero 

这里是我的Dockerfile的简化版本,说明我的testing:

 FROM ubuntu:trusty ADD . /my_app ADD ./config/ssh/docker_ssh_key /root/.ssh/id_rsa RUN ls -al /dev RUN ssh -t -t -v git@github.com CMD bundle exec thin -p $PORT -R config.ru start 

我已经testing了构build,并知道关键是否有效。 如果我在没有RUN命令的情况下构build映像并使用交互式shell启动容器,我可以访问git仓库。

我发现了一些类似的错误消息的其他问题。 但是他们是缺less/dev/tty ,在这里似乎不是这种情况。 有任何想法吗?

您需要接受Github主机密钥。 使用ssh-keyscan

 ssh-keyscan -t rsa github.com 2>&1 >> /root/.ssh/known_hosts