SSH, anahtar tabanlı kimlik doğrulamayı ayarladıktan sonra hala şifre istiyor


10

A makinemden B makineme kadar kök kullanıcı için başarıyla anahtar tabanlı bir kimlik doğrulaması oluşturdum.

Şimdi, B makinesinde, bir makinede olduğu gibi yeni bir kullanıcı oluşturdum USER. B makinesinde onun için bir ev dizini yarattım /home/USERve A makinesinden B makinesine onun için anahtar tabanlı kimlik doğrulaması oluşturmak istiyorum.

Bu yüzden A makinesinde koştum

  1. ssh-keygen -t rsa, tüm yolları kabul etti, öyleyse /home/USER/.ssh/id_rsave kelime öbekleri olmadan
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, şifre girildi ve masaj yaptırdı

Şimdi makineye giriş yapmayı deneyin bla bla bla

Yani her şey yolunda görünüyor.

Ancak bağlanmaya çalıştığımda ssh USER@BmachinesIPbir şifre girmem istendi. Günlüğü görmeye çalıştım ve koştum ssh -vvv USER@BmachinesIPve işte çıktının bir parçası:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
USER@BmachinesIP's password:

Peki, kimse bana neyi yanlış yaptığımı ya da neyi değiştirmem gerektiğini söyleyebilir mi? Belki sorun izinlerde, işte buradalar:

bir makinede:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

ve B makinesinde:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys

Yanıtlar:


13

Bir çözüm buldum. İzinlerde bir sorun vardı.

/home/USER uzak makinede tüm izinler verildi, ancak anahtar tabanlı kimlik doğrulaması için 755 olarak ayarlanmalıdır


2
Vay. Uygun ortak anahtar yapılandırması için merkezi olmalarına rağmen izinler hakkında sıfır hata ayıklama çıktısı olması şaşırtıcı.
— jchook

Vay canına, haklısın. Şimdi çalışıyor .... gerçi gerçekten iznini korumak istiyorum (775). Bunu nasıl değiştireceğine dair bir ipucu var mı?
— Pablo Olmos de Aguilera C.7

Hiçbir yolu yok gibi görünüyor, sadece geçici çözüm sshd_config içinde StrictModes no olarak ayarlanacaktır. : /.
— Pablo Olmos de Aguilera C.7

2
Temel olarak şu izinlere ihtiyacınız vardır:, chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keyso zaman çalışır. Maxime R.'nin
— erik

2
Tüm bu izin değişikliklerini yaptım ve ssh yaptığımda hala bir şifre istiyor. Ayrıca özel anahtarın her iki makinede de (Ubuntu) aynı olduğunu doğruladım. Çok şaşkın.
— Amalgovinus

2

Aynı sorun benim için taze CentOS7 yüklemek.

1. ev dizini izinlerini ve ~ / .ssh ve ~ / .ssh / yetkili_anahtarlar izinlerini kontrol edin (@erik uyarınca)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. / etc / ssh / sshd_config ayarlarını kontrol edin & servis sshd restart (her düzenlemeden sonra) Yararlı: sshd_config içinde "LogLevel VERBOSE" komutunu deneyin.

Hala tüm ok kontrol ettikten sonra şifre istemi var.

Ssh istemcisini -vvv günlükleriyle çalıştırın:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

Sunucu (/ var / log / secure) günlükleri:

Failed publickey for * from * port * ssh2: RSA *

ssh sunucusu güvenlik riski oluşturacağından istemciye daha fazla hata bilgisi göndermez.

Eğer sshd'yi farklı bir portta çalıştırırsam 'sshd -p 5555 -d'. Anahtar işe yaradı. Şifresiz giriş tamam. O NE LAN?

Sonra selinux'u devre dışı bıraktım (set SELINUX = / etc / selinux / config içinde devre dışı bırakıldı) ve yeniden başlattım. Parolasız giriş tamam çalıştı.

Benim Geçerli çalışma sshd_config ayarları:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

Bu yüzden işe yaramaz şifresiz ssh almak için selinux küçük bir şey değiştirmek olabilir bilmek güzel olurdu. Birisi cevabı geliştirebilir mi?


0

Çözüm SELinux'u devre dışı bırakmıyor, kullanıcı dizininin SELinux izinlerini düzeltiyor. Kullanıcı dizini içeriği olarak ayarlanmalıdır user_home_t.

Kontrol etmek,

$ sudo ls -Z /home/

Kullanıcı dizininizin içeriği başka bir user_home_tşeyse, SELinux ortak anahtar aracılığıyla SSH'ye o kullanıcı dizinine o kullanıcı dizinine izin vermez.

Düzeltmek,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

Anahtar tabanlı oturum açma şimdi çalışmalıdır.

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.