Вы говорите, что можно войти в систему с пустым паролем root? Я высоко рассмотрел бы рассмотрение этого и удостоверился бы, что учетная запись не имеет быть поставленным под угрозу.
ls -l /root/.ssh/id_dsa
должен возвратиться
-rw------- root ...
debug3: Попытка закрытого ключа:/root/.ssh/id_dsa
debug3: никакие такие идентификационные данные:/root/.ssh/id_dsa
Вы создавали свою пару ключей как пользователь root? Не похож на Вас, сделал, поскольку/root/.ssh/id_dsa, кажется, не существует (или возможно разрешение является неправильным: должно только быть чтение / записываемый корнем; никакой доступ для чтения-записи мира/группы).
Править
Похож Вы генерировали rsa ключи видом Вашего ls
но Вы предлагаете dsa ключи.
Откройте новый терминал и запустите sshd в режиме отладки (опция -d) на другом порту. Режим отладки работает, только если вы используете полный путь. Итак
`which sshd` -d -p 9999
Посмотрите стандартный вывод этой консоли и попробуйте снова sftp
sftp -oPort=9999 user@sftp.xxxxxx.com
Проверьте вывод и, если вы не можете понять, что происходит, вставьте его сюда.
ssh ОЧЕНЬ СТРОГО для разрешений. Кроме того, как вы указываете ключ? Вы позволяете ssh использовать значение по умолчанию ~ / .ssh / id_rsa?
Попробуйте указать ключ в интерфейсе командной строки следующим образом: -oIdentityFile = / root / .ssh / id_rsa
Если у вас есть доступ к серверу как root, проверьте auth.log, и вы сможете узнать, почему он отклоняет ключ ... но очень интересно, что сервер, похоже, принимает ключ в какой-то момент.