2015-08-21 14 views
5

ben aşağıdakileri yapmak istiyorum: Manuel ayarlı ssh bilgisayar tuşları/Dijital Okyanus Damlacık

  1. (çok uzun sürüyor benim testleri, dağıtmak) benim geliştirme makineden Dijital Okyanus damlacıkları oluşturun.
  2. Damlacıklara güvenli bir şekilde bir komut verin.
  3. Damlacıkları yok edin.

# 2'de takılıyorum. Dijital Okyanus API'si aracılığıyla damlacıkları başarılı bir şekilde oluşturabilirim ve SSH anahtarımı authorized_keys alanına ayarlayabilirim, ancak Dijital Okyanusun anahtarı oluşturmasına izin veriyorum, o zaman sunucunun genel anahtarını doğrulama yolum yok.

Eğer normalde bu aynı veri merkezindeydiyse, Dijital Okyanus'a bir MITM saldırısı uygulamamaya dayanabildiğimden beri bir endişe olmaz çünkü onlar zaten köke sahipler, ama benim gelişimimden bağlandığım için makine Kamu anahtarına güvenmenin bir yoluna ihtiyacım var.

Çeşitli bulut init kılavuzları aşağıdaki denedim, ama her zaman hata alıyorum: Ben hata için her türlü olasılığı ortadan kaldırmak için çalıştık

ssh [email protected] 
Connection closed by 178.62.69.133 

, ben bile özel kodlama base64 başvurdu ettik anahtar, kaçan bir sorun olabileceğini düşünüyor. ,

private_key = `base64 --wrap=0 #{loc}`.chomp 
public_key = `base64 --wrap=0 #{loc}.pub`.chomp 

ve koyun

ssh-keygen -t ecdsa-sha2-nistp256 -f /tmp/testing-60f42fcf -q -N 77924d8f4fa12a365c8c003ca091f5ad6a2c4c22 -C "" 

Sonra base64 encode it:

e = "ssh-keygen -t ecdsa-sha2-nistp256 -f #{loc} -q -N #{password} -C \"\"" 
system(e) 

bu şekilde genişler:

Bu

Anahtarları oluşturmak için kullandığınız komut bulut-init yaml dosyasına ( | kullanmak istemedim çünkü Yaml özel bir karakter ve ben Bunu önlemek istedim) mümkünse:

#cloud-config 
--- 
runcmd: 
- echo test > /root/test 
- rm /etc/ssh/ssh_host* 
- echo LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tClByb2MtVHlwZTogNCxFTkNSWVBURUQKREVLLUluZm86IEFFUy0xMjgtQ0JDLEY3MDNDNzM1QTAxQzgyNEVBRjhCODA4NkVDREIyMjAwCgpiYlpCa3A2Ujcyd1RRNUsyL2w4QW9YU3FQNllRVjV0aVJETytmU1FqZTlEUjY4MG9wY3RCRGhKRWdPQ0prSkw1CmhOUGxydzUveHFwTHM5UXc3cWJaWlUvRHR0YnlxZTFWUDcyVHBRS1pFL2FDcTdGTWFpbFJrcUpFa3JobVdCcFEKbWtQTW15M3BwVFZZKzJvRDZTdmMzdzZyTW1JTlpKUkltRUxiUk81S2M4bz0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= 
    > /tmp/base64_pri && base64 --decode /tmp/base64_pri > /etc/ssh/ssh_host_ecdsa_key 
- echo ZWNkc2Etc2hhMi1uaXN0cDI1NiBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEF5TlRZQUFBQUlibWx6ZEhBeU5UWUFBQUJCQkVHSDJBS3BVcVE0NVZQWGNFK3h5NXV6elVnajhKelBxODJNaERLV0szaGltUVBReWRPQ0RlRVdyRVJzeCtUTEtPSjBlRElJWU9jT2RWT0FteHZycG1nPSAK 
    > /tmp/base64_pub && base64 --decode /tmp/base64_pub > /etc/ssh/ssh_host_ecdsa_key.pub 
- sleep 1 && service ssh restart 

(ssh anahtarı/damlacık this) gösteri amaçlı olup, tahrip edilmiş, Üzülmeyin

Ben doğrulayabilir

ben gerisini ayrılırken echo test > /root/test'un başarıyla çalıştırıldığı komutların. Ben de yerel makinede test ettik ve md5sums maç:

028760a9374f9abd9c2c66eceb20f245 /tmp/pub_key_check 
028760a9374f9abd9c2c66eceb20f245 /tmp/testing-60f42fcf.pub 

2bf65516aaef01c731d061fa4ba788c5 /tmp/pri_key_check 
2bf65516aaef01c731d061fa4ba788c5 /tmp/testing-60f42fcf 

yüzden ben onları doğru deşifre biliyorum.

Diğer anahtar türlerini denedim, ancak mümkünse ecdsa tuşlarını kullanmak istiyorum, çünkü diğer kutular için varsayılan değer. Burada neyi yanlış yapıyorum? Ayrıca, bunu yapan tek kişi ben miyim? Çevremdeki Google'ım var ve ortak bir cevap gibi görünüyor ki insanlar rastgele bir ISS (veya benim durumumda kafede) bu çapraz veri merkezini yapıyorsanız, delirdiğimi düşündüğüm açık anahtarın sadece otomatik olarak güvenebileceğidir. pasif MITM size.

+2

'ECDSA-SHA2-nistp256' diye bir türü yoktur. Manüel sayfada, [-t dsa | ecdsa | ed25519 | rsa | rsa1] '(en azından ubuntu'mda). – Jakuje

+0

@Jakuje Fikir için teşekkürler, ancak "ecdsa" ya da "rsa" ya ti değişmesi sorunu çözmez. – zachaysan

cevap