如何用c++建立一个简单的ssh连接
How to establish a simple ssh connection with c++
我正在尝试制作一个将连接到 ssh 服务器(我的笔记本电脑)的 c++ 程序。服务器没问题,因为我可以通过腻子连接。虽然到目前为止我写的程序还不能。在我的代码中,我使用的是库 libssh.h,为了开发,我使用的是 visual studio 2015。我得到的错误是:crypt_set_algorithms2: no crypto algorithm function found for 3des-加拿大广播公司
到目前为止我还没有找到任何东西,所以我希望对你有所帮助。
我使用的代码:
#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);
}
尝试使用不同的密码。 3des-cbc
已损坏,可能已在您的服务器上禁用。
真的有nice tutorial简单的session
删除该行使其在 Ubuntu 上对我有用(不知道你在哪里找到它):
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
如果不是,您使用的 libssh
是什么版本?是不是有些过时了?
终于明白了!我删除了行
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
然后我使用 libssh v0-7.2 的 ssh.dll 而不是 v0-7.1 的 ssh.dll ] 我以前用过。 ssh.dll 位于 libssh-0.7.2\bin。如果您遇到 msvcr120d.dll 之类的错误,请尝试在 visual studio.
中从调试更改为发布
我正在尝试制作一个将连接到 ssh 服务器(我的笔记本电脑)的 c++ 程序。服务器没问题,因为我可以通过腻子连接。虽然到目前为止我写的程序还不能。在我的代码中,我使用的是库 libssh.h,为了开发,我使用的是 visual studio 2015。我得到的错误是:crypt_set_algorithms2: no crypto algorithm function found for 3des-加拿大广播公司 到目前为止我还没有找到任何东西,所以我希望对你有所帮助。 我使用的代码:
#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);
}
尝试使用不同的密码。 3des-cbc
已损坏,可能已在您的服务器上禁用。
真的有nice tutorial简单的session
删除该行使其在 Ubuntu 上对我有用(不知道你在哪里找到它):
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
如果不是,您使用的 libssh
是什么版本?是不是有些过时了?
终于明白了!我删除了行
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
然后我使用 libssh v0-7.2 的 ssh.dll 而不是 v0-7.1 的 ssh.dll ] 我以前用过。 ssh.dll 位于 libssh-0.7.2\bin。如果您遇到 msvcr120d.dll 之类的错误,请尝试在 visual studio.
中从调试更改为发布