Ssh-copy-id nasıl geri alınır?


15

2 düğümlü bir hadoop kümem var.

Bu komutu master üzerinde çalıştırdım:

$ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.1

Bunu nasıl geri alabilirim? Aslında anahtarı yeniden atamak istiyorum.

192.168.1.1 köledir.

Yanıtlar:


20

Çalıştırdığınızda kopyaladığınız genel anahtarı tanımlayın ssh-copy-id:

cat ~/.ssh/id_rsa.pub

SSH'yi anahtarı kopyaladığınız sunucuya kopyalayın:

ssh hadoop@192.168.1.1

Düzen dosya ~hadoop/.ssh/authorized_keysüzerinde 192.168.1.1tercih editörü kullanarak ve anahtar içeren satırı silin.


1
Neden daha otomatik yapmanın bir yolu var? Beğenssh-rm-id hadoop@192.168.1.1
SR

@SR Bunu otomatikleştiren tek bir komutun farkında değilim. Teorik olarak, satırı düzenlemek ve kaldırmak için sshbir sedkomut (veya benzeri) çalıştırmak için küçük bir tek ~/.ssh/authorized_keyssatırla kendiniz "otomatikleştirebilirsiniz" . Bkz. Superuser.com/questions/429954/…
David Edwards

4

Bir beğeni yaptıysanız ssh-copy-id:

remote='user@machine'
ssh-copy-id -i $remote

Böylece bu uzak makineye şifre kullanmadan erişebilirsiniz:

ssh $remote

Sistematik bir şekilde geri almak için aşağıdaki gibi bir komut dosyası yazabilirsiniz:

idssh=$(awk '{print $2}' ~/.ssh/id_rsa.pub)
ssh $remote "sed -i '#$idssh#d' .ssh/authorized_keys"

Komut dosyalarında kullanıyorum scpBirkaç dosyaya ihtiyacım var , bu yüzden sadece bir kez şifre soruyorum.


1
Bu biraz tehlikeli olabilir: anahtarın yorum alanını selamlıyorsunuz . Herhangi bir anlamı olmayan rastgele bir dizedir ve bir kereden fazla yer alabilir. Ben uzun AAA....==dize (gerçek anahtar) ya da gelen tüm satır için grep id_rsa.pub. Ancak +1, bir anahtarın kaldırılmasını otomatikleştirmeyi göstermek için.
PerlDuck

1
@PerlDuck haklısın. Anahtarı (2 $) kullanmak üçüncü alandan çok daha iyidir. Teşekkür ederim.
Javi M.

@Javi M. Başka bir sorunla karşılaştım. Sed'deki sınırlayıcı olarak varsayılan olarak kullanılan eğik çizgi genel anahtarımda vardı. Sonuç olarak, genel anahtarda görünmesi pek olası görünmediğinden sed sınırlayıcı olarak noktalı virgül kullanmayı en iyi buldum. Bunu yapmak için önce karakterden kaçmak gerekiyordu. Ben böyle bir şey ile sona erdi:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

İşte karakterleri bir genel anahtar de gidebilirler hangi bazı bilgiler.
ccalvert

Teşekkürler @ccalvert. Önerilen yorumunuza dayanarak chris-maes baskısını onayladım
Javi M.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.