Я просто установил ванильную систему ubuntu lucid (10.04) с openssh-сервером. Я пытаюсь настроить аутентификацию с открытым ключом, и она работает, только если я сначала подключаюсь с использованием аутентификации по паролю и оставляю этот сеанс открытым. Все новые одновременные сеансы будут работать с открытым ключом.
Я предпринял все шаги для обеспечения правильных разрешений в моем домашнем каталоге на стороне сервера.
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Мой клиентский 2048-битный открытый ключ RSA добавляется (только одна строка) к файлам authorized_keys. Мои ключи RSA также имеют пустые парольные фразы.
Я не понимаю, что может вызвать это. Я знаю, что это должно быть связано с конфигурацией моего сервера. Я слышал, что если конфигурация недостаточно безопасна, она не разрешает аутентификацию с открытым ключом, но я не понимаю, что это может быть.
# Authentication:
LoginGraceTime 120
PermitRootLogin no
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
# To enable empty passwords, change to yes (NOT RECOMMENDED)
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 yes
Остальное по умолчанию. PublicKey работает, но не для первого сеанса.
Заранее спасибо!
Если у вас есть зашифрованный домашний каталог, как это делает Ubuntu с EcryptFS, это объяснит, с чем вы столкнулись. Ваши первые ключи ~ / .ssh / authorized_keys станут доступны после того, как вы осуществите свой первый вход с паролем.
Один из способов разрешить прямой вход с помощью ключей ssh - указать AuthorizedKeysFile вне домашнего каталога. Это можно сделать, используя% u (пользователь) вместо% h (домашний каталог) в пути. Другой вариант - поместить копию ~ / .ssh / authorized_keys в вашу «размонтированную» версию вашего домашнего каталога. Это то, что находится под монтированием EcryptFS.
Тем не менее, я не уверен, насколько хорошо вам поможет любое из этих решений. Вам все равно (как бы) нужно будет войти в систему, используя свой пароль, чтобы иметь доступ к своему обычному домашнему каталогу. Это ваш пароль пользователя, который используется для развертывания парольной фразы, необходимой для монтирования / дешифрования вашего домашнего каталога EcryptFS. Да, вы все еще можете монтировать / расшифровывать вручную, но это почти другой вопрос.
Я предполагаю, что это работает, когда вы вошли в систему с аутентификацией пароля, потому что на стороне клиента вы установили ControlMaster / ControlPath, которые позволяют повторно использовать соединение для последующих подключений.
Попробуйте увеличить уровень журнала на стороне сервера, установив для LogLevel значение DEBUG3 и покопавшись в журналах (/var/log/auth.log), чтобы узнать, что происходит.
На стороне клиента добавьте -vvv в командную строку ssh, чтобы увидеть, какие ключи использует ваш клиент.
С обеими данными вы сможете понять, что происходит.
cp ~ / .ssh / authorized_keys / etc / authorized_keys
и измените / etc / ssh / sshd_config
AuthorizedKeysFile / etc / authorized_keys
и перезагрузите sshd /etc/init.d/ssh restart
Ваш файл authorized_keys должен находиться в папке .ssh и иметь 644 разрешения.