Настройка SSH-сервера: в чём я ошибся?

Аватар пользователя DRVTiny

Пытаюсь на шлюзе настроить SSH-сервер и для отладки на начальных этапах подключаюсь с этого же шлюза (создал для этого специальную группу, к которой принадлежит одна пользоваетльская учётная запись)

Конфигурация сервера (опускаю всё, что закомментировано):

Port 22
Protocol 2
ListenAddress 127.0.0.1
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel DEBUG
LoginGraceTime 2m
PermitRootLogin yes
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
HostbasedAuthentication no
IgnoreUserKnownHosts yes
IgnoreRhosts yes
PasswordAuthentication no
PermitEmptyPasswords no
KerberosAuthentication yes
KerberosTicketCleanup yes
TCPKeepAlive no
AllowGroups SSH_VUSERS
AllowUsers sshDRVTiny

Конфигурация клиента:

 Host *
   PreferredAuthentications publickey
   PasswordAuthentication yes
   IdentityFile ~/.ssh/identity
   IdentityFile ~/.ssh/id_rsa.pub
   PubkeyAuthentication yes
   LogLevel DEBUG
   ForwardX11 no

Ключи для клиента сгенерировал (парольную фразу оставил пус той), скопировал sshDRVTiny/.ssh/id_rsa.pub в sshDRVTiny/.ssh/authorized_keys:
[sshDRVTiny@localhost ~]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys.
Что мне нужно: нормальная аутентификация пользователя sshDRVTiny на SSH-сервере по протоколу SSH2 c localhost на localhost (с использованием RSA-ключей, без ввода пароля).
Вот что я получаю вместо ожидаемого результата:

[sshDRVTiny@localhost ~]$ ssh -l sshDRVTiny localhost
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/SSH/SSH_VUSERS/DRVTiny/.ssh/identity type -1
debug1: identity file /home/SSH/SSH_VUSERS/DRVTiny/.ssh/id_rsa.pub type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_3.8.1p1
debug1: match: OpenSSH_3.8.1p1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_3.8.1p1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is c4:b0:eb:93:7d:dc:60:f0:41:9e:7f:df:fd:cf:29:09.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /home/SSH/SSH_VUSERS/DRVTiny/.ssh/identity
debug1: Offering public key: /home/SSH/SSH_VUSERS/DRVTiny/.ssh/id_rsa.pub
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: No more authentication methods to try.
Permission denied (publickey,keyboard-interactive)

Товарищи, имеющие опыт настройки SSH, объясните, пожалуйста, в чём тут загвоздка проклятая? (где собака порылась ?-) )

Аватар пользователя DRVTiny

Re: Настройка SSH-сервера: в чём я ошибся?

Вот ещё на всякий случай (вдруг это поможет провести более точную диагностику проблемы):

[sshDRVTiny@localhost ~]$ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA5InJs7uitn+ul7foZUeJo3NcT+ksG975Pmw4WU6CeujVbMt8nWMgBh41HqJtVs2VvRjLFpVUTkpy99Ue5Ke1xQ9QR1mA8jd0mwn6ml1RKH6dFhdnq8FlRRvkb42hUGLHYjzCUEKjaadZ1IoHtLVL8Q/Wjp0jqWtkF/HGgi8wyCM= sshDRVTiny@localhost

Очень подробный лог, который создаёт сервер при работе в отладочном режиме (запуск sshd -ddd -D -e) при попытке подключения к нему - см. во вложении

ВложениеРазмер
ssh.log.gz 1.5 КБ
Аватар пользователя DRVTiny

Re: Настройка SSH-сервера: в чём я ошибся?

Блин, так что с SSH-м? Я уже третий день долбаюсь с его настройкой, уйму какого-то маразма (во всех отношениях... Одну и ту же никудышную статью видел растиражированной на 10-ке различных сайтов) перечитал - ни черта не помогает. Что у нас тут, все впали в глубокий транс?!
Никто ничего не знает, про SSH вообще все буквально первый раз слышат или просто принципиально лень отвечать (лучше флеймить до бесконечности, чем реальную помощь кому-то оказывать)? Ладно, чёрт с Вами, буду на другие форумы обращаться, коли тут все такие шибко занятые!

Аватар пользователя Archont

Re: Настройка SSH-сервера: в чём я ошибся?

1) Не нужно столько эмоций!
Люди действительно могут быть заняты. Кроме того, вход по SSH куда-либо без пароля -
не самая насущная из задач.
Я, например, работаю по SSH удаленно вот уже скоро 6 лет, и никогда даже не задумывался об
использовании такой возможности.
2) На самом деле в такой настройке нет ничего особо сложного. Нужно просто вчитаться в конфигурационные файлы
клиента и сервера (в те, что ставятся по-умолчанию), и прочитать толковую статью, например эту:
http://www.opennet.ru/docs/RUS/use_ssh. Она хоть и старенькая, но её на самом деле вполне
можно использовать.
3) Теперь о том, как я это сделал у себя.
Постановка проблемы: организовать возможность входа на localhost с него же root-ом без пароля.
а) Для этого берём DEFAULT-ные конфиги клиента и сервера, и слегка правим настройки сервера:
#LogLevel INFO
LogLevel DEBUG3

#PermitRootLogin no
PermitRootLogin without-password

PasswordAuthentication no

Всё остальное оставляем без изменения.

б) Теперь беремся за ключи.
Можно сгенерировать все ключи заново, а можно использовать старые ключи (если они уже есть).
После этого в каталоге со сгенерированными ключами делаем следующее:
cat ./*.pub > ./authorized_keys
Полученный authorized_keys копируем в /root/.ssh/authorized_keys
Остальные ключи (не pub!) копируем соответственно в /root/.ssh/identity, /root/.ssh/id_dsa и /root/.ssh/id_rsa
Почему так? Потому что так прописано в конфигурации клиента по-умолчанию.
Их же копируем в /etc/ssh с именами /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_dsa_key соответственно,
потому что так они прописаны в конфигурации сервера по-умолчанию.

в) Не забываем о /etc/hosts.allow! В него прописываем строку sshd:127.0.0.1

Вот и все, собственно.

/etc/rc.d/init.d/sshd restart

Заходим root-ом по ssh:
[root@home root]# ssh localhost
Last login: Sun Mar 12 10:35:14 2006 from localhost.localdomain
[root@home root]#

Смотрим /var/log/messages, и видим, что все нормально.
PS. Настройки PAM также не менялись, используем конфиги по-умолчанию.

Аватар пользователя Archont

Re: Настройка SSH-сервера: в чём я ошибся?

Хочу добавить, что клиент по-умолчанию (по крайней мере у меня) сконфигурирован так:
Protocol 1,2
Таким образом аутентификация происходит по протоколу SSH1.
Меняем порядок проверки протоколов, и получаем аутентификацию по протоколу SSH2 с ключем RSA.

Аватар пользователя DRVTiny

Re: Настройка SSH-сервера: в чём я ошибся?

Самое интересное, что у меня всё прекрасно настроилось на домашней машине, в том числе и беспарольное переключение на оболочку root'а с помощью ssh, альтернативный su. Т.е. получается, что настраивал-то я всё правильно, а проблема на сервере была... чёрт его знает, в чём она была, но явно не в настройках SSH как таковых Грустный Сейчас я даже keychain'ом, который мне порекомендовали на knoppix.ru, наловчился пользоваться, так что личный ключ у меня зашифрован passphrase, но вводить её каждый раз не нужно. Просто праздник души! Так бы вот и на сервере сделать, но там, видимо, придётся из исходников SSH собирать, потому что штатный SSH от ASP10 работает как-то странно...

RSS-материал