SSH.net — SSH-соединение работает, но SCP возвращает неверное имя пользователя и пароль

Предположим, у меня есть класс подключения со свойствами для SSHClient и SCPClient из библиотеки SSH.net (от Renci):

public class SecureConn
{
    public SshClient Ssh {get; set;}
    public ScpClient Scp {get; set;}

    public SecureConn(string host, string usr, string pwd)
    {
        this.Ssh = new SshClient(host, usr, pwd);
        this.Scp = new ScpClient(host, usr, pwd);
    }

    ...

}

Когда я пытаюсь запустить команды с SSH - все работает нормально. Однако, когда я пытаюсь использовать this.Scp.Upload() (обратите внимание на те же учетные данные в конструкторе) для загрузки файла из общего сетевого ресурса на сервер Linux, я получаю System.IO.Exception, возвращающее «Неверное имя пользователя или пароль». Что может быть причиной получения этой ошибки?

Нужно ли мне устанавливать какое-либо программное обеспечение, чтобы SCP нормально работал в Windows? Или это источник сетевого ресурса, который каким-то образом генерирует это сообщение? Может быть, серверу Linux нужно установить другой пароль для SCP?

Я проверил с помощью WinSCP, и я могу безупречно подключиться к нему и копировать файлы.

Примечание. Выше приведен пример кода, а не фактический код, но рабочий процесс в основном такой же. Я уверен, что метод Renci ScpClient.Upload выдает ошибку, поэтому я ищу код вне кода, чтобы найти ошибку.


person Asunez    schedule 24.02.2017    source источник
comment
Неисправный клиент SCP? Может, попробовать другой? Вы можете интегрироваться с WinSCP из C#, у них есть клиентская библиотека на их веб-сайте. (обратите внимание, что для этого у вас должен быть установлен winscp). Также имейте в виду, что существуют разные протоколы для передачи файлов по SSH, возможно, вам нужен клиент, поддерживающий SFTP (а не только SCP).   -  person caesay    schedule 24.02.2017
comment
Что вы подразумеваете под неисправным клиентом SCP? Насколько я знаю, SSH.net — одна из наиболее рекомендуемых библиотек для SSH/SCP в .NET. Кроме того, я не могу это изменить (я не единственный пользователь этого кода).   -  person Asunez    schedule 24.02.2017
comment
Трудно представить, как сервер может выдавать ошибки аутентификации для scp, разрешая ssh. Соединение scp — это просто соединение ssh, при котором клиент запрашивает сервер для запуска scp после аутентификации. Во время аутентификации сервер даже не знает, что клиент будет выполнять scp. Вы говорите, что код, который вы включили, не является фактическим кодом. Вы должны сократить свой код до отдельной программы, которая демонстрирует проблему.   -  person Kenster    schedule 24.02.2017
comment
@Kenster Дело в том, что я не думаю, что проблема здесь в коде. Возможно, мне не хватает некоторых зависимостей, и приведенный мной пример используется здесь, чтобы показать, что я использую одни и те же учетные данные для SSH и SCP (на самом деле это сокращенный код). Код работает на других ПК, которые я тестировал, но я не могу заставить его работать на своем, поэтому возникает вопрос о других факторах, которые могут этому помешать.   -  person Asunez    schedule 27.02.2017


Ответы (1)


По-видимому, причина была не в библиотеке SSH.net, а в учетных данных, используемых для входа в сетевую папку. Для тех, у кого такая же проблема, сохранение учетных данных Windows (отметьте «Запомнить мое имя пользователя и пароль» в приглашении для входа) в сетевом ресурсе устранило проблему. Имея разовый доступ, нет. Возможно, подключение диска тоже сработает, но я этого не проверял.

person Asunez    schedule 27.02.2017