2017-06-01 20 views
5

trong Dockefile của tôi, tôi thêm khóa ssh vào trình neo và nhân bản một dự án từ bitbucket. tôi có thể kéo một nhánh khác trong tệp Docker dễ dàng.thêm các khóa ssh trong Docker

ARG key 
ARG pub_key 
RUN mkdir /root/.ssh/ 
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts 
ADD $key /root/.ssh/ 
ADD $pub_key /root/.ssh/ 
RUN git clone [email protected]:******************/sql.git 
WORKDIR "/sql" 
RUN git pull origin testBranch 

repo được nhân bản sucesfully và và kéo được thực hiện thành công từ testBranch khi tôi chạy Docker này sử dụng docker run lệnh và thử bất kỳ lệnh git nó nói

Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 

nhưng phím ssh là có trong thư mục /root/.ssh

Trả lời

2

Khóa của bạn được thêm vào gốc người dùng (/root/.ssh/). Tôi đoán khi bạn chạy docker run bạn đang chuyển sang một người dùng khác (có thể, docker).

Nếu bạn thêm id_rsa.pub để sửa người dùng (người dùng sau khi chạy lệnh docker run) thì nó sẽ hoạt động.

$ whoami hiển thị cho bạn người dùng hiện tại.

1

Thay vì chìa khóa đi qua như args bạn cũng có thể gắn kết thư mục .ssh chủ của thành Docker với các tùy chọn sau đây:

docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image> 
Các vấn đề liên quan