Я пытаюсь отправить SFTP на сервер с именем пользователя и паролем, предоставленным мне клиентом, но я продолжаю получать Disconnected: No supported authentication methods available (server sent: publickey)
. Я использую Ubuntu 13.10, и я пробовал использовать графический интерфейс Filezilla, а также sftp -vv user@host
и lftp -u user sftp://host
в терминале.
Вот результат, который я получаю от Filezilla в режиме Debug: Verbose:
Response: fzSftp started
Trace: CSftpControlSocket::ConnectParseResponse(fzSftp started)
Trace: CSftpControlSocket::SendNextCommand()
Trace: CSftpControlSocket::ConnectSend()
Command: open "user@host" 22
Trace: Server version: SSH-2.0-CoreFTP-0.3.1
Trace: Using SSH protocol version 2
Trace: We claim version: SSH-2.0-PuTTY_Local:_Sep_14_2013_01:12:43
Trace: Using Diffie-Hellman with standard group "group14"
Trace: Doing Diffie-Hellman key exchange with hash SHA-1
Trace: Host key fingerprint is:
Trace: ssh-rsa 1024 b1:ac:c5:b6:d2:b8:d3:ef:fc:d2:b3:d8:06:2c:d2:25
Trace: Initialised AES-256 SDCTR client->server encryption
Trace: Initialised HMAC-SHA1 client->server MAC algorithm
Trace: Initialised AES-256 SDCTR server->client encryption
Trace: Initialised HMAC-SHA1 server->client MAC algorithm
Trace: Pageant is running. Requesting keys.
Trace: Pageant has 1 SSH-2 keys
Trace: Trying Pageant key #0
Trace: Sending Pageant's response
Trace: Access denied
Trace: Disconnected: No supported authentication methods available (server sent: publickey)
Error: Disconnected: No supported authentication methods available (server sent: publickey)
Trace: CSftpControlSocket::ResetOperation(66)
Trace: CControlSocket::ResetOperation(66)
Error: Could not connect to server
sftp -vv
вывод аналогичен. Кажется, что Pageant предлагает мой открытый ключ перед паролем (что нормально), но затем не продолжает аутентификацию по паролю. Есть ли способ сначала принудительно выполнить аутентификацию по паролю (то есть полностью обойти Pageant)? Я должен иметь возможность запускать операции сценария через это соединение, чтобы использовать sftp
или lftp
команды будут необходимы. Есть ли флаг, который я могу установить для этого? Я просмотрел страницы руководства, но не нашел того, что искал.
Всегда есть вероятность, что что-то неправильно настроено на сервере клиента, но поскольку клиент может войти в систему из этой учетной записи, это не проблема, я подозреваю, что проблема где-то на моей стороне.
ОБНОВИТЬ
Клиент может войти на сервер с этой учетной записью с помощью Filezilla в Windows, что исключает возможность того, что его сервер настроен на разрешение только аутентификации с открытым ключом. Это более крупная компания с ИТ-отделом, у которого много таких аккаунтов, поэтому разумно можно с уверенностью предположить, что они делали это раньше. Вот результат их Debug: Verbose в Filezilla:
Status: Connecting to host:22...
Trace: Going to execute "C:\Program Files\FileZilla FTP Client\fzsftp.exe"
Response: fzSftp started
Trace: CSftpControlSocket::ConnectParseResponse(fzSftp started)
Trace: CSftpControlSocket::SendNextCommand()
Trace: CSftpControlSocket::ConnectSend()
Command: open "user@host" 22
Trace: Looking up host "host"
Trace: Connecting to xxx.xxx.xxx.xxx port 22
Trace: Server version: SSH-2.0-CoreFTP-0.3.1
Trace: Using SSH protocol version 2
Trace: We claim version: SSH-2.0-PuTTY_Local:_Jun_15_2008_14:47:43
Trace: Using Diffie-Hellman with standard group "group14"
Trace: Doing Diffie-Hellman key exchange with hash SHA-1
Trace: Host key fingerprint is:
Trace: ssh-rsa 1024 b1:ac:c5:b6:d2:b8:d3:ef:fc:d2:b3:d8:06:2c:d2:25
Trace: Initialised AES-256 SDCTR client->server encryption
Trace: Initialised HMAC-SHA1 client->server MAC algorithm
Trace: Initialised AES-256 SDCTR server->client encryption
Trace: Initialised HMAC-SHA1 server->client MAC algorithm
Command: Pass: ********
Trace: Sent password
Trace: Access granted
Trace: Opened channel for session
Trace: Started a shell/command
Status: Connected to host
Trace: CSftpControlSocket::ConnectParseResponse()
Trace: CSftpControlSocket::ResetOperation(0)
Trace: CControlSocket::ResetOperation(0)
Status: Retrieving directory listing...
Trace: CSftpControlSocket::SendNextCommand()
Trace: CSftpControlSocket::ChangeDirSend()
Command: pwd
Response: Current directory is: "/"
Возможно, ответ будет запоздалым, но для тех бедных душ, которые окажутся здесь, как я.
Вероятно, происходит то, что Filezilla использует переменную env SSH_AUTH_SOCK
для доступа к доступным ssh-ключам.
На моей машине, если я бегу echo $SSH_AUTH_SOCK
в терминале я получаю что-то вроде '/run/user/1000/keyring/ssh'
Чтобы Filezilla не могла найти ключи ssh, которые есть в вашем агенте ssh, вы можете очистить эту переменную среды, сделав это. export SSH_AUTH_SOCK=""
. Теперь, если вы запустите Filezilla в этом терминале, он не сможет получить доступ к ключам ssh от вашего агента ssh и будет использовать пароль подключения, как настроено.
Сервер настроен так, чтобы разрешать только аутентификацию с открытым ключом, но не пароли. Вы можете увидеть это там, где сказано:
Trace: Disconnected: No supported authentication methods available (server sent: publickey)
Error: Disconnected: No supported authentication methods available (server sent: publickey)