Несколько месяцев назад я создал только учетную запись sftp.
Я взял примерно это руководство: https://wiki.archlinux.org/index.php/SFTP_chroot
Возможен доступ из linux.
Теперь кто-то хочет получить доступ к учетной записи sftp через WinScP.
Я сделал это согласно этим документам: https://winscp.net/eng/docs/guide_public_key
Я создал пару открытого / закрытого ключей через WinSCP и создал открытый ключ для файла authorized_keys с помощью этой команды:
puttygen -O public-openssh -o foo.pub foo.ppk
Я добавил строку foo.pub в ~ modsftp / .ssh / authorized_keys, как обычно.
Доступ без пароля из linux работает, но не через putty / winscp:
===> psftp -i foo.ppk modsftp@remote-host
Using username "modsftp".
Server refused our key
Using keyboard-interactive authentication.
Password:
На ssh-сервере я просто вижу эту строку:
sshd[26281]: Connection closed by 10.111.44.33 [preauth]
Я не понимаю, почему он работает через инструменты командной строки openssh, но не через putty / winscp.
Проблема решена: PEBCAK (существует проблема между креслом и клавиатурой).
Доступ через инструменты openssh работал, потому что использовался мой ssh-agent, а не -i foo
аргумент командной строки :-)
Добавление открытого ключа в ~ modsftp / .ssh / authorized_keys в этом случае было бесполезным.
Если бы я отключил ssh-agent таким образом (установив для SSH_AUTH_SOCK пустую строку), он не работал бы и с инструментами openssh:
SSH_AUTH_SOCK= sftp -i foo modsftp@remote-host
Я включил LogLevel DEBUG
в sshd_config и увидел проблему в файле журнала:
sshd[30819]: debug1: matching key found: file /etc/ssh/authorized_keys/modsftp, line 1
BINGO: настройка только для sftp отличается от обычных учетных записей ssh. Author_keys хранятся в другом файле.
Проблема решена. Надеюсь, этот вопрос + ответ поможет другим людям с подобными проблемами.