2014-12-16 14 views
10

Docker dosya kullanarak ssh tuşlarını oluşturmak için bir gereksinim olan projelerim için Docker kullanıyorum, böylece konteyner oluşturduğunda bir çift rsa anahtarı üretecek, bazı örnekler gördüm. Anahtar üretimi .sh dosyası ile gerçekleşir ve Dockerfile bu .sh dosyasını çalıştırmak için bara sahiptir. Doshrefile yerine doğrudan Dockerfile yapabilmenin bir yolu var mı?ssh anahtar oluşturma

Şu anda Ssh anahtar çifti oluşturmak için Dockerfile'da aşağıdakileri kullanıyorum. Ama bu bana hata söyleyerek birisi aynı ulaşmak için bir yol sağlayabilir eğer

RUN ssh-keygen -q -t rsa -N '' -f /home/docker/.ssh/id_rsa 

gerçekten çok yardımcı olacak "/ bin/sh ssh-keygen bulunamadı" verir.

sayesinde Yash

+0

Neden ssh ?? – Robert

+0

Merhaba, herhangi bir eylemi gerçekleştirmek için ana makineden ssh anahtar kimlik doğrulamasını kullanan bir web uygulamasına sahibim. – priyank

+0

anahtar oluşturma aracının adı biraz yanıltıcıdır. Açık SSH'nin bir parçası, işte bu yüzden. – eliasw

cevap

17

sorun ssh-keygen henüz kapta mevcut olmamasıdır. Bu, örneğin, bir ubuntu taban görüntüsüne openssl-client paketinin kurulmasıyla kolayca çözülebilir.

aşağıdaki Dockerfile tam da yapar ve kabın kök klasöründe

FROM ubuntu:latest 

RUN apt-get -y install openssh-client 
RUN ssh-keygen -q -t rsa -N '' -f /id_rsa 

bir anahtar yerleştirir AMA BUNU OKUYUN: Benim güçlü tavsiyem de kabın dosya sistemine olursa olsun anahtarlar, sertifika yerleştirmek için değil herşey! Bu, güçlü bir güvenlik riskine yol açabilir, çünkü kapsayıcı imajını elde eden herkes, anahtarın geçerli olduğu hizmetlerde kendini doğrulayabilir; Kriptografik anahtarları ve sertifikaları ele alacağınız aynı özenle konteynır görüntülerini işlemeye zorlar! Bu nedenle, tuşların kabın dışında tutulması tavsiye edilir. Bu Docker VOLUMES kullanılarak kolayca elde edilebilir; ve başlatırken Docker kapsayıcısına anahtar/kapsayıcı bir ses tutma birimi yerleştirmeniz yeterlidir. KONTEYNER DIŞINDA

OLUŞTURMA TUŞLARI konteyner çalıştırıldığı anda Dockerfile yerine anahtarı oluşturmak etmez ve kabın dosya sistemine

FROM ubuntu:latest 
RUN apt-get -y install openssh-client 
CMD ssh-keygen -q -t rsa -N '' -f /keys/id_rsa 

İlk dışında anahtarı oluşturmak için kullanılabilir ardından, inşa şu komutla kap:

docker build -t keygen-container . 

kullanarak kabı Başlangıç

/tmp içinde ana bilgisayarda bir anahtar oluşturur.

+0

Merhaba eliasw, çok teşekkür ederim :) – priyank

+0

Merhaba eliasw, çok teşekkürler :) docker/home dir in/gibi dış konteyner gibi üretebilir bir yolu var mı?Ayrıca Dockerfile/etc/hosts/dosyasında bir şeyi yankılamaya çalışıyordum, ama başarı yok :(, bunun nasıl elde edilebileceğine dair bir fikrin var mı? – priyank

+0

Aslında, bu oldukça basit: 1) Ana makinenizde , anahtarlarınızı oluşturmak için ssh-keygen çalıştırın. Örneğin,/home/docker içinde 2) Kabın içine/home/docker'ı monte etmek için -v kullanın. Kesin bir açıklama için Ciltler'deki [Docker Belgeleri] 'ne (https://docs.docker.com/userguide/dockervolumes/#volume-def) bakın. – eliasw

1

Yanıt neredeyse doğrudur, ancak önce güncelleme almanız gerekir. Belki önceki ubuntu görüntüde doğruydu ama benim için çalışmadı. Ayrıca, öncelikle localhost dizininde bulunabilecek id_rsa dosyalarını kaldırırım.

İlgili konular