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.