大家好,我正在尝试在windows应用程序(我编写的一个程序)和ssh服务器之间建立一个简单的ssh连接。在我的代码中,我使用了libssh,并且出现了类似这样的错误: crypt_set_algorithms2:没有为3des-cbc找到加密算法函数
我使用的代码是:
#include <libssh/libssh.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
ssh_session my_ssh_session;
int rc;
int port = 22;
int verbosity = SSH_LOG_PROTOCOL;
char *password;
// Open session and set options
my_ssh_session = ssh_new();
if (my_ssh_session == NULL)
exit(-1);
ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "192.168.1.6");
ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, "john");
ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
//ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port);
// Connect to server
rc = ssh_connect(my_ssh_session);
if (rc != SSH_OK)
{
fprintf(stderr, "Error: %s\n", ssh_get_error(my_ssh_session)); //HERE IS WHERE I GET THE ERROR
ssh_free(my_ssh_session);
exit(-1);
}
// Verify the server's identity
// For the source code of verify_knowhost(), check previous example
/* if (verify_knownhost(my_ssh_session) < 0)
{
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
exit(-1);
}
*/
// Authenticate ourselves
password = "pass";
rc = ssh_userauth_password(my_ssh_session, NULL, password);
if (rc != SSH_AUTH_SUCCESS)
{
fprintf(stderr, "Error authenticating with password: %s\n",
ssh_get_error(my_ssh_session));
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
exit(-1);
}
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
}发布于 2015-11-22 22:41:37
您的程序员指定连接必须使用aes128-ctr密码,并且没有列出任何替代方案。您收到的错误消息表明服务器不支持此密码。尝试注释掉SSH_OPTIONS_CIPHERS_C_S行,或者将参数更改为包含服务器支持的密码的列表(根据您所说的,3des-cbc可能会起作用)。要指定密码列表,请使用带有逗号分隔密码名称的字符串,例如"aes128-ctr,aes256-ctr,3des-cbc"
但是,除非您知道自己在做什么,否则请坚持使用默认值,并且不要指定任何显式密码。
https://stackoverflow.com/questions/33637615
复制相似问题