Ssh istemcisini yalnızca parola kimlik doğrulaması kullanmaya nasıl zorlayabilirim?


375

Örneğin: bir Ubuntu 11.04 olan pubkey auth kullanıyorsam, ssh istemcisini bir sunucuya yalnızca parola auth kullanacak şekilde nasıl ayarlayabilirim? (sadece varsayılan olarak anahtarla giriş yaptığım bir sunucudaki şifreleri test ettiğim için gerekli)

Bir yol buldum:

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

ve şimdi şifre soruluyor ama resmi yollar var mı?

Yanıtlar:


578

Son zamanlarda buna da ihtiyacım vardı ve şunu buldum:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

İstemcinin parola doğrulamasına izin vermeyecek şekilde yapılandırılmadığından emin olmanız gerekir.


4
Kerberos'un otomatik kimlik doğrulaması için kullanıldığı bir ortamda görünmesi için şifre istemini ssh -o GSSAPIAuthentication=no example.com
zorlamam gerekiyordu

21
Güzel. -o PubkeyAuthentication=noBenim durumumda sadece yeterli oldu.
mivk

10
bir arkadaşım osx laptop ssh kullanmak için kullanmak zorunda kaldım: -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no yerine
guido

4
Bu benim için çalışmıyor. Söylemeye devam ediyor: İzin reddedildi (publickey). ve asla bir şifre istemi sunmaz.
reinierpost

7
@reinierpost muhtemelen ssh ana bilgisayarı devre dışı bırakıldığı için PasswordAuthentication. Aslında, buradayım çünkü şifre devre dışı bırakma şifresini auth'nin ana bilgisayarımda doğru çalıştığını test etmek istedim.
RubberDuck

169

Bu amaçla bir kısayol keşfettim:

ssh user:@example.com

İki nokta üst üste ( :) ve boş şifreyi not alın.


2
Henüz bir belge yok. Aslında, OpenSSH kaynak kodunu boşuna boşa harcadım (ayrıştırma aşaması oldukça şifreli ve burada sabah oldu :)). İlk motivasyonum: boş bir parola verirseniz birçok müşteri parola ister, örneğinmysql -u user -p
Halil Özgür

43
Bu artık işe yaramıyor, en azından benim durumumda değil. sshİstemci, yeni kurulan bir sunucunun kimliğini doğrulamak ve hiç bir şifre sormadan erişilen maksimum deneme sayısı nedeniyle reddedilmek üzere ilgisiz özel anahtarlar üzerinde çalıştı. Bu ilk bağlantı için parola doğrulamayı zorlamak için, -o PreferredAuthentications=passwordbelirgin bir etkisi olmayan kolon numarası olan sözdizimini kullanmak zorunda kaldım . Dolayısıyla bu numara denemeye değer olsa da, tutarlı bir davranış olarak buna güvenilmemelidir.
WhiteWinterWolf

2
@ HalilÖzgür: Üzücü haberler, hatırlaması ve yazması çok daha kolaydı;)!
WhiteWinterWolf

3
WhiteWinterWolf @ @ Quualcuno, ne yazık ki, artık bazı platformlarda çalışmıyor.
Halil Özgür

2
Ssh_config dosyanızda PasswordAuthentication no olmadığından emin olun!
Braiam

32

Scoopr tarafından gönderilen yöntemin yanı sıra, ssh istemcisi yapılandırma dosyanızdaki ana bilgisayar seçeneklerini de ayarlayabilirsiniz.

Senin içinde .sshdizin adında bir dosya oluşturun config(zaten mevcut değilse) ve izinleri ayarlamak 600, daha sonra ile başlayan bölümler oluşturabilir

host <some hostname or pattern>

ve bundan sonra, örneğin

host bob.specific.foo
user fred

host *.home.example
user billy
port 9191

Böylece alabilirsin

host server.to.test
PubkeyAuthentication=no

bu dosyada, ve sonra sadece

ssh server.to.test

ve seçenek yakalanacak.


Bu cevap için teşekkürler. Ben bir giriş yarattım ~/.ssh/configve ekledimPubkeyAuthentication no
Craig London

2
Benim için çalışmıyor.
reinierpost

11

Son zamanlarda buna ihtiyacım vardı ancak yukarıdaki seçeneklerin hiçbiri işe yaramazdı ssh -v, -oanahtardan geçen komut satırı seçeneklerinin dosyamda belirtilen değerler tarafından fazla kullanılmadığını gösterdi ~/.ssh/config.

İşe yarayan şuydu:

ssh -F /dev/null <username>@<host>

Gönderen sshadam sayfası:

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

Bu cevaba verilen krediler: ssh'ın .ssh / config'yi yoksaymasını nasıl sağlayabilirim?


1
bu soruya cevap vermiyor. Anahtarları her zaman aracıda saklayabilirsiniz ve yaklaşımınız müşterinin bunları kullanmasını engellemez.
Jakuje

Hm, bu konuyu yanı sıra cevabımda bahsettiğim konuyu nasıl düzeltir ?
adeelx,

2
Ayrıca, anahtarları standart konumda (söz konusu olduğu gibi) varsa, yapılandırma mevcut olup olmamasına bakılmaksızın kullanılacaktır. İlk cevaplarda belirtilen yöntemlerden biriyle giderdim.
Jakuje

Çok doğru değil, Lubuntu 14.04'ümde test ettim ve anahtarlarımı standart konumda tutsam da ~/.ssh/config, belirtirsem anahtarları kullanılamaz -F /dev/null. ssh -vçıktı, bu durumda yardımcı olur, açıkça gösteriyor ki *, ssh yapılandırmamda hepsini yakala bir girişim olduğu için , -oönceki cevaplarda olduğu gibi anahtar yoluyla geçirilen seçeneklere saygı göstermek yerine genel anahtarı kullanmayı seçti .
adeelx,

1
Standart konum ~/.ssh/id_rsamanuel sayfada belirtildiği gibidir. Bu yollar istemcide kodlanmış. Test yaparken doğru kullanıcıyı sağladığınızdan emin olun.
Jakuje

4

Bu yanıtlardan birkaçını denedim, ancak ssh -vgenel anahtarlarımın ana dizinden çıkarıldığını göstermeye devam ettim. Bununla birlikte, sahte bir kimlik dosyası belirlemek benim için hile yaptı:

ssh -i /dev/null host

Bunu kalıcı olarak yapmak zorundayım (APC rafa monte edilmiş bir PDU’daki bozuk SSH sunucusunda çalışmak için - güvenliği önemsiyorsanız bu şeylerden uzak durun - bu yüzden seçeneği config dosyama koydum:

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null

2

@scoopr ve @Halil Özgür cevapları benim için işe yaramadı.

Bu benim için çalıştı:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

Kaynak: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


13
Soru, şifre ile müşteri kimlik doğrulaması ile ilgilidir. Bu cevap, sunucular ana anahtarının bilinen ana bilgisayarlardan biriyle eşleşip eşleşmediğini kontrol etmekle ilgilidir. Aslında farklı bir soruya cevap
veriyor

2

Ayrıca BatchMode=yes, .ssh / config içinde aktif olmadığından emin olun . Aksi takdirde, etkileşimli bir şifre istemi alma şansınız yoktur.


0

Bu konuda dünyada bir tek ben olabilirim, fakat sshçalışan başka bir işletim sisteminden (Windows'ta bir cygwin kabuğunda choco ssh) çalıştığımwhich ssh

Yani çözüm oldu

 /usr/bin/ssh user@example.com

Tam yolu not alın. Bunu koştuktan sonra yaptımcyg-get openssh

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.