2014-07-22 102 views
7

在Docker鏡像構建期間,我無法檢出託管在GitHub上的私有git存儲庫。從SSH在詳細模式下的錯誤是:構建Docker時無法使用私鑰進行SSH 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的一個精簡版表示我的測試:

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 [email protected] 

CMD bundle exec thin -p $PORT -R config.ru start 

我已經測試了構建並知道密鑰的工作。如果我在沒有RUN命令的情況下構建映像並使用交互式shell啓動容器,我可以訪問git存儲庫。

我發現了一些類似的錯誤消息的其他問題。但他們失蹤/dev/tty這似乎並不是這裏的情況。有任何想法嗎?

+0

私鑰(在客戶端還是服務器上)是否有密碼?如果是這樣,也許嘗試測試看看使用未加密的私鑰是否會導致相同的問題。這不是最安全的設置,但它可以幫助您隔離問題。 – phylae

回答

7

您需要接受Github主機密鑰。使用ssh-keyscan

+3

謝謝!我終於明白這是提示接受主機密鑰的提示。手動接受它會抑制此提示,並繼續進行SSH。 –

+0

謝謝。必須在沒有copy〜/ .ssh/know_hosts的容器docker中實現git clone。 –

+0

您也可以禁用密鑰檢查:http://askubuntu.com/questions/123072/ssh-automatically-accept-keys – Ben