Ortak anahtar (şifre yok) + Ubuntu üzerinde çalışan google authenticator ile SSH almaya çalışmak 14.04.1


20

Ubuntu 14.04.1 kullanıyorum (OpenSSH 6.6 ve libpam-google-authenticator 20130529-2 ile).

Ortak anahtar kimlik doğrulaması (parola olmadan) ve bir kullanıcı Google'ın Kimlik Doğrulayıcısından bir kod sorulduğunda SSH oturumlarını ayarlamaya çalışıyorum.

Bu talimatları izlemeniz / uyarlamanız bana bir şifre isteminin yanı sıra bir Google Yetkilendirme istemi de getirdi:

Paketi yükledim, dosyalarımı /etc/ssh/sshd_configve /etc/pam.d/sshdosyalarını düzenledim

İçinde /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
AuthenticationMethods  publickey,keyboard-interactive
UsePAM yes

ve alt kısmında /etc/pam.d/ssh:

auth required pam_google_authenticator.so nullok # (I want to give everyone a chance to set up their 2FA before removing "nullok")

PAM'ın siparişe bağlı olduğunu biliyorum, ama aynı sshd_configzamanda?

Neyi yanlış yapıyorum? Herhangi bir yardım mutluluk duyacağız.

Yanıtlar:


28

İyi çalışmasını sağladınız,

apt-get install libpam-google-authenticator

Gelen /etc/pam.d/sshdbir değişmiş / (üst) satırları eklendi:

# @include common-auth
auth required pam_google_authenticator.so

Ve içinde /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

İyi çalışıyor ve şimdi ortak anahtarla kimlik doğrulamasından sonra bir "Doğrulama kodu" istemi alıyorum. Şimdi şifre kimlik doğrulama yöntemini etkili bir şekilde PAM kaldırmış gibi, nasıl şifre + belirteç VEYA anahtar + belirteç ile kimlik doğrulamasına izin vereceğinden emin değilim.

Ssh -v ile Ubuntu 14.04.1 LTS (GNU / Linux 3.8.0-19-generic x86_64) kullanma: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f 6 Oca 2014


Gelecek kuşak için sorunumu fark ettim. Ben de denedim PasswordAuthentication no, ama öyle değildi. Sorun / ~ / .ssh / config dosyamda / sahip olduğum ControlMaster autove ControlPathyönergelerim oldu. Kendimi kilitlemediğimden emin olmak istedim, bu yüzden her zaman bir SSH oturumunu açık bırakardım. Bilgisayarım onları tekrar kullanacağı için, sistem bir jeton istemeden hep içeri girdim. Cevabınızı doğru olarak işaretledim, çünkü onu takip eden biri gerçekten işe yarayacaktı. Teşekkürler!
JT.

2
Ben var 7. CentOS kullanarak değilim PasswordAuthentication no, ChallengeResponseAuthentication yes, AuthenticationMethods publickey,keyboard-interactive, ve UsePAM yesde sshd_config. Anahtarımı doğrular ve ardından Google Şifrematik jetonumu sorar ve sonra da şifremi sorar. Üçünü de yapmamı sağlıyor - hiçbirini atlayamıyorum. Ben de AuthenticationMethods publickey,keyboard-interactive:pamman sayfası tarafından önerildiği gibi denedim , ama bu bir şey değişmedi. Herhangi bir fikir?
Nick Williams

6
@NickWilliams Aynı sorunu yaşıyordum. Benim için sabit olan şey @include common-auth, cevapların gösterdiği çizgiyi takdir etmem gerektiğiydi . Ben sadece pam_google_authenticatorilk başta /etc/pam.d/sshd satır için bir yorum olduğunu düşündüm .
ücretsiz

5
Teşekkür ederim! Çözümüm tam olarak aynı değildi (yorum yapmam gerekiyordu auth substack password-auth), ancak yorumunuz sorunumu çözdü!
Nick Williams


7

Sonunda auth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nulloküstüne çalışarak bu çalışmayı başardım /etc/pam.d/sshd.

Göre pam.d adam sayfası :

  • success=done Google Authenticator oturumu kapatırsa başka kimlik doğrulama yapılmayacağı anlamına gelir.
  • default=die Google Şifrematik giriş girişimini reddederse, kimlik doğrulama işlemi hemen başarısız olur ve şifre istemini atlar.

Yani [success=done new_authtok_reqd=done default=die]sıralama arasında bir karışımı olduğunu sufficientve requisitebaşarı, hemen (yeterli) sonlandırmak ve eğer başarısızlık varsa, aynı zamanda hemen (gerekli) sonlandırmak: Biz hem davranışı istemek beri kontrol değerlerine.

nullokPam_google_authenticator.so argümanının, ~/.google_authenticatorkullanıcı için bir dosya bulunamazsa, ortak anahtar kimlik doğrulamasının normal şekilde devam ettiği anlamına geldiğini unutmayın . 2FA ile hesaplarımın yalnızca bir alt kümesini kilitlemek istiyorsam bu yararlıdır.


6

Linus Kendall'ın cevabı eski sistemlerde çalışmalı, ancak daha yeni Linux makinelerinde sorunlu; benim kemer linux tabanlı web sunucusunda bu yapılandırma pam benim ssh anahtar aldıktan sonra benim kimlik doğrulayıcı kodu ve şifremi soran sonuçlanır (yani ben tüm 3 gerekir).

Bu sorunu önleyen ve her sistemde çalışması gereken daha basit bir çözüm, girişi şu şekilde değiştirmektir /etc/pam.d/sshd:

auth sufficient pam_google_authenticator.so

Ve sonra, Linus'un bahsettiği `` / etc / ssh / sshd '' ile aynı düzenlemeleri yapmak için:

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

Sunucu ortak anahtarınızı kabul ettikten sonra sizden kimlik doğrulayıcı simgenizi istemeniz gerekir. Parolanızı istememelidir.

Bir yan not olarak, bir sftp kullanıcı hesabına sahip olmak istiyorsanız, muhtemelen çalışmasını sağlamak için google kimlik doğrulayıcıyı atlamanız gerekecektir. İşte bir sftp hapishane kullanarak güvenli bir şekilde nasıl yapılacağına dair bir öneri. İçinde etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match User ftp-user
  PasswordAuthentication yes
  AuthenticationMethods password
  ChrootDirectory /path/to/ftp/dir
  ForceCommand internal-sftp

Yalnızca / path / to / ftp / dir root yazma izinlerini yapmanız gerekir (örn. chown root:root /path/to/ftp/dir, chmod 755 /path/to/ftp/dirBu dizinin üstündeki tüm ebeveynlerin de güvenli izinlere ihtiyacı vardır. Bunu genel olarak yaptığım şekilde, chroot dizinini /home/shared/useroluşturmak, orada dizin (örneğin 'veri') ve sonra böyle paylaşmak istediğiniz herhangi bir dizin montaj:sudo mount -o bind /path/to/ftp/dir /home/shared/user/data

Tüm bu adımları izlerseniz, ssh kullanıcılarınız için genel anahtar + google kimlik doğrulayıcı girişinize ve veri aktarımı için işlevsel bir şifre korumalı sftp hesabına sahip olacaksınız.


Harika çalışıyor. Ve bazı nedenlerden dolayı, ortak doğrulamayı yorumlamakta rahat hissetmiyorum, bu Linus'un çözümünden daha idealdi.
Luke Sapan

Çok teşekkürler! pubkey + authcode'dan sonra neden hala parola yazmam gerektiğini merak ederek, ssh hata ayıklama gecesini boşa harcadım ……
felix021 22:17
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.