ssh izin istemek nasıl engellenir?


57

RAC kurulumu için oracle nodlarının kurulumunu hızlandırmaya çalışıyoruz. bu, ssh'nin kurulmasını ve parola istemeyecek şekilde yapılandırılmasını gerektirir.

Sorun şudur: İlk kullanımda bizden istenir

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

Bundan kaçınmanın bir yolu var mı, yoksa her sunucuya en az bir kere manuel olarak bağlanmaya mahkum muyuz?

Yanıtlar:


90

Set StrictHostKeyChecking nosizin de /etc/ssh/ssh_configo sunucu üzerindeki her kullanıcı tarafından kullanılan bir küresel seçenek olacaktır dosyası. Veya ~/.ssh/configdosyanızı, yalnızca geçerli kullanıcı için varsayılan olduğu yerde ayarlayın . Veya komut satırında kullanabilirsiniz:

ssh -o StrictHostKeyChecking=no -l "$user" "$host"

İşte bunun nasıl çalıştığına dair bir açıklama man ssh_config (veya daha güncel versiyona bakın ):

StrictHostKeyChecking

      Bu bayrak “evet” olarak ayarlanmışsa, ssh$HOME/.ssh/known_hosts dosyaya hiçbir zaman otomatik olarak ana bilgisayar anahtarı eklemez ve ana bilgisayar anahtarı değişen ana makinelere bağlanmayı reddeder. Bu, truva atı saldırılarına karşı maksimum koruma sağlar, ancak /etc/ssh/ssh_known_hostsdosya yetersiz tutulduğunda veya yeni ana bilgisayarlarla bağlantı sık sık yapıldığında rahatsız edici olabilir . Bu seçenek kullanıcıyı tüm yeni ana bilgisayarları manuel olarak eklemeye zorlar. Bu bayrak “hayır” olarak ayarlanmışsa, sshotomatik olarak kullanıcının bilinen ana bilgisayar dosyalarına yeni ana bilgisayar anahtarları ekleyecektir. Bu bayrak “sor” olarak ayarlanırsa, kullanıcı tarafından bilinen ana bilgisayar dosyalarına yalnızca ana kullanıcı gerçekten yapmak istediklerini onayladıktan sonra yeni ana bilgisayar anahtarları eklenir ve ssh ana bilgisayar anahtarı değişmiş olan ana bilgisayarlara bağlanmayı reddeder. . Bilinen ana bilgisayarların ana bilgisayar anahtarları her durumda otomatik olarak doğrulanır. Argüman “evet”, “hayır” veya “sor” şeklinde olmalıdır. Varsayılan ayar "sormak" dır.


1
+1, ayrıca sunucularım için de bu. Ve açık olmak gerekirse, sorudaki mesaj, sunucudan değil, bağlanan istemci bilgisayardaki ssh istemcisinden geliyor.
Patkos Csaba 02.02.2012

3
Bu cevap yapımda bir güvenlik sorunu gibi geliyor.
SunSparc

25

ssh-keyscan - Ssh açık anahtarlarını toplayın

Bağlanacağınız ana bilgisayarların listesini zaten biliyorsanız, aşağıdakileri yapabilirsiniz:

ssh-keyscan host1 host2 host3 host4

-HŞimdiye kadar ssh varsayılanları gibi sonuçlara sahip olma seçeneğini belirleyebilirsiniz.

Ayrıca verebilirsiniz, ancak -t keytypeedildi AnahtarTürü olduğu dsa, rsaya da ecdsasen anahtarının türü varsayılan yerine kapmak için hangileri olduğu bir tercihi varsa.

Çalıştırdıktan sonra ssh-keyscan, bilinen ana makinenizin dosyasını önceden doldurmuş olacak ve yeni bir anahtar eklemek için sizden izin istemeyecek.


1
"Önceden doldurulmuş olacak" yorumu hakkında biraz endişeliyim ... known_hosts bu çalıştırdıktan sonra oluşturulmadı veya değiştirilmedi. İçeriği doldurmak için dosyaya aktarılabilir mi?
rschwieb

4
Techrepublic.com/article/… ile onaylama . ssh-keyscan -H myhost >> ~/.ssh/known_hostsveya sunucu genelinde,/etc/ssh/ssh_known_hosts
cole

12

Parmak izini, her sunucunun bilinen ana bilgisayarlarına ekleyebilirsiniz. Tek bir kullanıcı için:

cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts

3
Bu, karma uygulamanın başlamasından bu yana yapmanın doğru yolu değil.
Deim0s

10

Ana Bilgisayarı Yoksay

HostKeyChecking'i yoksay. Bunun için örneğin kullanıyorum:

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null user@example.net

Ana Bilgisayar Ekle

.ssh/known_hostsİlk bağlanmadan önce ana bilgisayarın / sunucunun parmak izini ekleyin. Bu daha güvenli bir yoldur.


Selam. Oracle, ssh komutunu verir, böylece bunu nasıl gerçekleştireceği üzerinde hiçbir kontrolüm yoktur.
Nicolas de Fontenay

Upvoted. Gördüğüm cevapların çoğu, bilinen hosts dosyasını boşaltan dev kelimesini özlüyor. Bu, komutu çok daha kullanışlı hale getirir ve mevcut herhangi bir yapılandırmayı mahvetmez.
Alex

(2) Tabii ki, bilinen ana bilgisayar dosyasına parmak izi eklemek ideal bir yaklaşımdır - ancak nasıl yapılır ? (1) Kullanıcı tarafından bilinen ana bilgisayar dosyalarının ayarlanması neden faydalıdır  /dev/null? ssh -oStrictHostKeyChecking=no user@example.netSunucunun parmak izini $HOME/.ssh/known_hostsdosyaya sokmak için bir kez yapmak daha iyi olmaz mıydı , bu nedenle sonraki bağlantılar onay isteği olmadan devam edecek mi?
G-Man

3

Denemeden önce aşağıdaki pasajı yürütün.

mkdir -p ~/.ssh     
echo "Host *" > ~/.ssh/config     
echo " StrictHostKeyChecking no" >> ~/.ssh/config

ps: Kesinlikle üretim sunucuları için değil, ManInMiddle'a dikkat edin


0

Ancak Tim'in bir kapalı tip şeyler için verdiği cevabı seviyorum, ancak eğer düzenli olarak bağlanmayı düşündüğünüz bir ev sahibi iseniz ~ / .ssh / config 'inizde bir girdi oluşturacağım (eğer dosya yoksa oluşturun).

# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
    HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
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.