与sshlib连接时出现“ Kex错误:在列表中未找到算法diffie-hellman-group1-sha1-之一”

时间:2018-09-08 06:56:09

标签: c++ ssh sftp libssh

我正在Windows中实现SFTP C ++,以传输一些文件。我已经通过using this 下载并附加了所有库(libssh 0.5.0)。

我从this author : Desphilboy找到了一些代码。但显示错误为:

  

错误:Kex错误:在列表曲线25519-sha256 @ libssh.org.ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,中找不到算法diffie-hellman-group1-sha1- diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1(用于kex算法)。无法连接ssh会话。1错误:正在写入数据包:套接字上的错误(或连接已关闭):没有错误。

我想使用那些系统用户名和密码连接到特定IP。有什么建议吗?

下面是我的主班

#include "ssh.h"

int main()
{
    pSFTPConnector  sshc = new  SFTPConnector(L".\\", L"147.13.5.123", 22, L"John", L"password");  // change the hostname , port , username, password to your sftp server, your credentials

    FILE *nullfile = fopen("null", "w");
    sshc->setLogFile(nullfile);
    sshc->setVerbosity(1);  // you can change the verbosity as appropriate for you

    int i = sshc->InitSession();
    if (i != E_OK) wprintf(L"%s", sshc->errstring.c_str());

    i = sshc->ConnectSession();
    if (i != E_OK) wprintf(L"%s", sshc->errstring.c_str());

    i = sshc->InitSFTP();
    if (i != E_OK) wprintf(L"%s", sshc->errstring.c_str());

    i = sshc->SFTPrename("renamed_myfile.txt", "myfile.txt");  //change these file names
    i = sshc->Makedir("sftpdir");
    i = sshc->testUploadFile("myfile2.txt", "1234567890testfile");


    i = sshc->SFTPreget("c:\\testdir\\reget_downloaded_CAR_HIRE_FINAL.jpg", "CAR_HIRE_FINAL.jpg", 64 * 1024);
    sshc->setBlockTransferDelay(1);

    i = sshc->GetSessionStatus();
    i = sshc->SFTPreput("c:\\testdir\\CentOS-6.5-x86_64-bin-DVD1.iso", "reput_CentOS-6.5-x86_64-bin-DVD1.iso", 64 * 1024);
    i = sshc->SFTPreput("c:\\testdir\\Reget_CentOS-6.5-x86_64-bin-DVD1.iso", "reput2_CentOS-6.5-x86_64-bin-DVD1.iso", 64 * 1024);

    if (i != E_OK) wprintf(L"%s", sshc->errstring.c_str());
    delete sshc;
    getchar();
    return 0;
}

头文件是ssh.h,我已按照this

中的说明添加到项目中

1 个答案:

答案 0 :(得分:0)

libssh 0.5年7岁。因此,它不支持许多最新服务器所需的现代算法。更不用说它可能存在许多安全问题。

使用最新版本的libssh。