Назад | Перейти на главную страницу

Включение аутентификации ключа DSA для SFTP с сохранением пароля для входа в систему по желанию (Ubuntu 12.04)

У меня есть сервер под управлением Ubuntu 12.04 Server. Я хочу иметь возможность использовать SFTP в командной строке с ключом DSA, поэтому мне не нужно вводить пароль в терминал. Можно ли это сделать на тем же сервер ... т.е. я хочу SFTP на localhost (чтобы протестировать код PHP перед его запуском). Но я по-прежнему хочу разрешить ввод пароля другим клиентам, если они этого хотят. Я не хочу, чтобы сертификат был вынужденный, но я не хочу, чтобы он запрашивал пароль, если сертификат пройден или что-то еще.

У меня в ssh_config включены следующие параметры:

RSAAuthentication yes
PasswordAuthentication yes
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_dsa

Следующие файлы с указанными разрешениями находятся в /root/.ssh/

-rw-r--r--  1 root root  668 Apr 10 11:06 authorized_keys
-rw-------  1 root root  668 Apr 10 11:03 id_dsa
-rw-r--r--  1 root root  608 Apr 10 11:03 id_dsa.pub

Я скопировал ключ в авторизованные ключи с помощью:

cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys

И когда я пропускаю авторизованные ключи, он добавляет ключ.

Итак, когда я пытаюсь подключиться к sftp с помощью sftp -v root@testserver (только локально, опять же, для тестирования некоторого кода, но это не имеет значения), я все равно получаю запрос пароля. Вот часть подробного вывода:

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Offering DSA public key: /root/.ssh/id_dsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Next authentication method: password
root@testserver's password:

Я пропустил что-то очевидное? Или не получится подключиться локально?

Спасибо

Разрешения в /root/.ssh каталог неверен, если StrictModes yes установлен в /etc/ssh/sshd_config. Вы можете проверить, так ли это, включив LogLevel DEBUG, перезагружая сервер и просматривая логи (/var/log/auth.log для Ubuntu, если вы не меняли стандартную конфигурацию системного журнала)

Исправьте их, выдав:

chmod -R go= /root/.ssh

и попробуй еще раз.

Имея оба PubKeyAuthentication и PasswordAuthentication позволяет делать то, что вы хотите, то есть для тех пользователей, которые предоставят открытый ключ, их доступ будет без пароля (при условии, что их открытый ключ существует в authorized_keys файл); а тем, кто этого не делает, будет предложено ввести пароль.

И RSAAuthentication используется только с версией 1 протокола, которую, надеюсь, вы не используете, так как она небезопасна.

Не забудьте прочитать SSHD_CONFIG(5) справочная страница.