.ssh / config dosyasına şifre ekleme


24

Ubuntu 12.04 kullanıyorum. Günlük birçok sunucuya bağlanmak için ssh kullanıyorum, bu yüzden parametrelerini .ssh / config dosyasına koydum ; bunun gibi :

Host server1
User tux
Port 2202
HostName xxx.x.xx.x

Her dosya için bu dosyaya şifre koymanın bir yolu var mı? Böylece sunucu bir şifre istediğinde, terminal geçişi koyar ve sunucuya gönderir, bu yüzden her seferinde şifreyi yazmam gerekmez. Ayrıca, genel / özel anahtar çiftini kullanmak istemiyorum.


10
Bunun için keypairs içindir.
Michael Hampton

Yanıtlar:


31

Hayır, komut satırında bir openssh yerleşik mekanizması kullanarak şifreyi ssh kimlik doğrulaması için etkileşimli olmayan bir şekilde belirtme veya sağlama yöntemi yoktur. En azından bildiklerimden değil. Parolanızı bekliyoruz komut dosyasına kodlayabilirsiniz, ancak bu da iyi bir çözüm değildir.

Michael'ın da belirttiği gibi kesinlikle parolasız kimlik doğrulaması için tuş takımlarını kullanmak istersiniz, sonunda özel anahtar dosyada büyük bir paroladır.


Mesele şu ki, onun müşterileri sunucularım ve anahtarları kullanarak giriş yapmama izin vermiyorlar. Kimlik bilgilerinin depolandığı tüm sunuculara giriş yapmak için bir usb depolama aygıtından alınmış olan bir bash betiği yazıyorum. Teşekkürler
Ajo Augustine

1
Oldukça güvensiz. Bu komut dosyasında önerilecek tek şey bu dosyayı zor dosya izinleriyle kilitlemektir.
Danila Ladner,

1
Anahtarlara izin vermezlerse, ssh'ın nasıl çalıştığını yanlış anlarlar - şifre girişine izin vermek sizi sözlük saldırılarına vb. Açar (çok, çok yavaş da olsa) - aynısını özel bir anahtar çifti ile başarmak imkansızdır. Anahtarların yanlış ellere düşmesi konusunda endişeleniyorsanız, anahtarın özel bölümünü parola şifreleyebilirsiniz, böylece kullanabilmeniz için iki faktöre ihtiyacınız olur (parola anahtarlığınızda / ssh temsilciniz tarafından da hatırlanabilir). )
Alex Berry

Müşterilerinizi eğitin. Parola doğrulamasını devre dışı bırakmanın daha iyi olduğunu ve yalnızca tersine çeviren anahtarlara izin verdiğini açıklayın.
Nikita Kipriyanov

20

Yorum dizisini önlemek için: Evet, bu güvensizdir (tartışmasız bile güvensiz). Bunu yalnızca yalıtılmış bir ağdaki laboratuar durumunda veya tam sıfırlama / formatlama olmadan üretim sunucularını veya potansiyel olarak üretim sunucusunu içermeyen benzer bir durumda yapmanızı şiddetle tavsiye ederim.

2950 anahtarımın özel / genel anahtarları desteklediğini sanmadığım için bunu ayarlamak istedim ve bir noktada bu bilgiyi edinmeyi umuyorum, ancak henüz orada değilim.

Bir takma ad ve sshpass kullanarak bu başarılabilir.

  1. Sshpass'ı yükle
  2. Senin Alter .ssh / config söz konusu listelendiği gibi kullanıcı adı içerecek şekilde dosyayı
  3. Terminalinize bir takma ad ekleyin (.bashrc kullandım ve gloabl ayarlarına karşı tavsiye ederim)
  4. Hedefe giriş yapmak için diğer adını kullanın

Örnek takma adım:

alias ssc='sshpass -pcisco ssh'

Burada "cisco" şifresidir. -P ve şifre arasında boşluk olmadığına dikkat edin.

Kullanım (soruyu referans alarak):

ssc server1

Not: Bu, yalnızca arama motorlarını kullananlar için başlıktaki soruyu yanıtlar. Soru örneği gibi sunucular kullanıyorsanız, özel / genel anahtar çiftleri olmalı ve bu cevap kullanılmamalıdır.


Herhangi bir nedenden dolayı anahtarlarla gerçekten çalışamadığınızda, tek uygulanabilir çözüm.
sjas 29:16

Eserleri! Muhteşem.
Rahul,

Takma adı tam bir kabuk betiği ile değiştirmenizi öneririm; Bu, ana bilgisayar parametresine bağlı olarak hangi parola dosyasının kullanılacağını dinamik olarak seçme fırsatı verir.
7heo.tk

Birisi -p ve şifre arasına çok iyi bir boşluk bırakabilir, çünkü çoğu zaman cli programlarında olduğu gibi ...
masterxilo 18:18

10

Evet, yukarıda belirtildiği gibi şifreyi basitçe kaydetmenin bir yolu yoktur. Yetkilendirme için ssh anahtarını kullanmanızı tavsiye ederim.

ilk önce anahtarınızı oluşturun:

ssh-keygen

Ardından anahtarı sunucularınıza / masaüstlerine kopyalayın:

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

Bu kadar. Bir daha asla şifre sorulmayacak.

Ayrıca genel olarak şifre yetkilendirmesini kaldırmanızı tavsiye ederim ancak bu size kalmış.


1
Ssh-copy-id referansınız için teşekkürler! Eskiden bazı sıkıntıları kullanırdım sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"ama bu program daha temiz ve niyeti açıkça gösteriyor.
masterxilo 18:18

3

Bunu ssh ile yapmanın bir yolu yok, olabildiğince güvensiz.

Danila'nın bahsettiğin gibi, senaryo kodlarını kullanabilirsin ama canımı sıkmazdım.

Merak ediyorum neyi başarmaya çalışıyorsun? Bir sunucudan diğerine atlamak ister misiniz? Bu durumda, iş istasyonunuzda ssh-agent'ı kurmak ve kullanmak ve hedef ana bilgisayarlarda aracı iletmeyi etkinleştirmek istiyorsunuz; Bu şekilde kimlik bilgileri değişimi, özel anahtarınızı kopyalamak zorunda kalmadan yerel temsilcinize yönlendirilir.


VisualStudio, bu özelliğin yardımcı olacağı uygulamaya özel şifreler gibi kişisel erişim belirteçleri kavramına sahiptir.
spuder

1

Bu betiği ~/.local/bindizinden kullanıyorum

#!/usr/bin/bash

ORIG_SSH=/usr/bin/ssh
HOST=$1

SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
    export SSHPASS
    sshpass -e $ORIG_SSH $@
else
    $ORIG_SSH $@
fi

Hangi bana en parolayı belirlemenizi sağlar #PS <password>de .ssh/configdosyaya.

Ancak, herkesin dediği gibi, kullanmak daha iyi ssh-keys olan ssh-agentbu mümkün olduğunda


0

Bu durumu ele almanın doğru yolu, oturuma dayalı bir ssh aracısı kullanmaktır. İşte nasıl:

$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:

Parola oturumun geri kalanında geçerli olacaktır. İlk komutu yalnızca bir kez çalıştırmanız yeterlidir ve bundan sonra istediğiniz kadar çok anahtar ekleyebilirsiniz. Oturum öldürüldüğü zaman, temsilci de öyledir; şifrenin şifrelenmiş bir depolaması yoktur.

Şaşırdım, çok uzun zaman sonra bu cevap burada değildi!


Olmamasının nedeni, muhtemelen, posterin, herkese açık / özel anahtar çiftini kullanmak istemediğini söylemesidir.
Jenny D diyor Monica

1
Bunu özledim, teşekkür ederim. O zaman şunu ekleyeceğim: SSH için bir keypair kullanmamak gerçekten, gerçekten kötü bir fikir. Daha güvenli VE daha uygun ... OP'yi tekrar gözden geçirme çağrısı. Parola içermeyen bir keypair kullanmak, hiçbir keypair'den ve paroladan çok daha güvenlidir. Ancak, ideal olarak, biri parola içeren bir keypair kullanır ve parolalarının depolanmasını gerektiren bir oturumda olsalardı, verdiğim adımları kullanırdı.
pranalli

-1

Bunu sshpass kullanarak daha güvenli bir şekilde yapabilirsiniz.

  1. Şifrenizi geçmiş olmadan ayarlayın

    dışa aktarma PS = your_password ; tarih -d $ (tarih 1)

  2. Ana bilgisayar takma adını yukarıdaki gibi ~ / .ssh / config olarak ayarlayın

  3. Ortam değişkenini kullanmak için ssh pass komutunu kullanın ve tek bir komutla gerekli makineye giriş yapın

sshpass -p $ PS Instagram Hesabındaki Resim ve Videoları ssh

Ortamınız şifrenizi tutuyor ve ne çalıştırdığınızı bilmiyorsanız, çalışan komut dosyalarının bu şifreyi sızdırması risklidir.


Hayır bu güvenli değil. Ve oldukça çirkin.
7heo.tk

Bu "çözüm" sorundan daha uzun değil mi? Tüm bu ekstra adımlar ve yine de yazmanız gerekirsshpass -p $PS ...
Dan H
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.