В доступе SSH отказано (открытый ключ), но работает root ssh

15

Я пытаюсь настроить ssh-доступ для учетной записи пользователя, которую я создал с помощью chef на цифровом сервере Ocean Ubuntu 12.04. У меня были настройки в цифровом океане, чтобы автоматически копировать ключ ssh моего мака при создании капли.

Я могу войти в систему как root без проблем, но мой другой пользователь не может пройти аутентификацию. это кажется распространенной проблемой, и я проверил некоторые другие ответы и нашел эту команду, чтобы получить больше информации:

ssh -vvv -i id_rsa user@serverIP

Журналы для пользователя root (который успешно) с этой командой

отлаживать

1: Offering RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp snip!
debug3: sign_and_send_pubkey: snip!
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

отказавший пользователь:

отлаживать

1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred 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 RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/evan/.ssh/id_dsa
debug3: no such identity: /Users/evan/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.

Что для меня означает, что открытый ключ неверен. Но, если я войду в систему как пользователь root и зайду home/otheraccount/.ssh/authorized_keys, я увижу, что мой ssh-ключ есть. Я подумал, что, возможно, произошла ошибка, поэтому я сделал, cp .ssh/authorized_keys ~/home/otheraccout/.ssh/authorized_keysно это не помогло. Я не знаю, где еще искать.

мой etc/ssh/sshd_conig:

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
"sshd_config" 88L, 2508C
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

# GS

SAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no
Banner /etc/ssh_banner

редактировать:

drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh
-rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys

Edit2:

Как предлагается в комментариях /var/log/authlog:

Apr 21 04:59:30 localhost sshd[586]: User deploy not allowed because account is locked
Apr 21 04:59:30 localhost sshd[586]: input_userauth_request: invalid user deploy [preauth]

Я пытался сделать, sudo usermod --expiredate -1 deployи он вернулсяno changes

user2936314
источник
1
Правильны ли ваши разрешения? ~/home/otheraccount/.sshдолжен иметь 700и ~/home/otheraccount/.ssh/authorized_keysдолжен иметь 600разрешение, и оба файла должны принадлежатьotheraccount
clement
Я думаю, что они правильные, развертывание - другое: drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh -rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys
user2936314
Каковы строки журнала serverIP( /var/log/auth.log), когда вы пытаетесь войти как deployпользователь?
Климент
интересно, жалуется, что пользователь заблокирован, я добавил логи выше.
user2936314
не позволяет мне редактировать вышеупомянутый комментарий: я исправил это с passwd -u. Может ssh, как и deployсейчас, но действительно любопытно, почему мой шеф-повар создает заблокированных пользователей. Пожалуйста, скопируйте / вставьте свой комментарий выше в качестве ответа, чтобы я мог отдать вам должное
user2936314

Ответы:

16
  • Вход в систему по протоколу SSH может завершиться ошибкой по разным причинам (неправильные права доступа к каталогу / файлу, неправильные ключи и т. Д.), И подключающийся клиент просто получит Permission deniedили No more authentication methods to tryили какую-либо общую ошибку.

  • Точная причина сбоя входа в систему будет доступна в журнале ssh /var/log/auth.logили в /var/log/secureзависимости от конфигурации syslog.

милостивый
источник
Это лучший ответ на все вопросы о неудачной попытке входа в SSH, которые я когда-либо видел! Вместо случайного предположения о неправильных разрешениях и именах файлов, как предлагают все остальные ответы, просто проверьте упомянутые журналы, и они содержат всю необходимую информацию!
Ярослав Админ
Точная причина не в моем файле журнала. Все это говорит о том, что сессия была открыта, а не закрыта.
VectorVortec
3

Та же проблема для меня свежая установка CentOS7.

1. проверьте разрешения home dir и разрешения ~ / .ssh и ~ / .ssh / authorized_keys (как говорит @clement)

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

2. проверьте настройки / etc / ssh / sshd_config && service sshd restart (после каждого редактирования). Полезно: попробуйте "LogLevel VERBOSE" в sshd_config.

Я все еще получил запрос пароля после проверки всего, что было хорошо.

Запустите клиент ssh с журналами -vvv:

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

Журналы сервера (/ var / log / secure):

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

Сервер ssh не отправляет больше информации об ошибке клиенту, так как это представляет угрозу безопасности.

Если я запускаю sshd на другом порту 'sshd -p 5555 -d'. Ключ работал. Логин без пароля в порядке. WTF?

SAD :-( сказать, что я затем отключил selinux (установите SELINUX = отключено в / etc / selinux / config) и перезагрузился. После этого вход в систему без пароля работал нормально.

мой текущие рабочие настройки sshd_config:

[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

Так что было бы неплохо узнать, можем ли мы изменить что-то маленькое в selinux, чтобы заставить работать без пароля пароль ssh. Кто-нибудь может улучшить ответ?

то же самое здесь: /superuser/352368/ssh-still-asks-for-password-after-setting-up-key-based-authentication/1072999#1072999

gaoithe
источник