libsshライブラリを使用していて、新しいSFTPセッションを作成しようとしています。私は(から取られた私は、リモートサーバーのシスログをチェックし、以下を使用しようとしたとき、私はこのエラーを取得するいくつかの理由でエラーSFTP libssh failure
dispatch_protocol_error: type 90 seq 3 [preauth]
を見つけ
ssh_packet_unimplemented: Received SSH_MSG_UNIMPLEMENTED (sequence number 3)
のエラーメッセージが出続けますlibssh doc)
int sftp_helloworld(ssh_session session) {
sftp_session sftp;
int rc;
sftp = sftp_new(session); // Freezes at this part
if (sftp == NULL) {
fprintf(stderr, "Error allocating SFTP session: %s\n", ssh_get_error(session));
return SSH_ERROR;
}
rc = sftp_init(sftp);
if (rc != SSH_OK) {
fprintf(stderr, "Error initializing SFTP session: %s.\n", sftp_get_error(sftp));
sftp_free(sftp);
return rc;
}
sftp_free(sftp);
return SSH_OK;
}
実際に動作しているのは、実際のssh接続だけです。 SCP、SFTPを使用している場合でも、リモートシェルを開いている場合も、同じエラーが発生します。
私の問題に関して多くの調査をしましたが、救済策が見つかりませんでした。どんな助けも素晴らしいだろう。
EDIT:
私は/var/log/auth.log
を通じて見て、この発見のAmazon EC2サーバー上で
:私はSSH_OPTIONS_LOG_VERBOSITY
SSH_LOG_PACKET
に、すべてがスムーズに実行しlibsshコードで
sshd[24860]: Accepted publickey for ubuntu
sshd[24860]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
sshd[24930]: dispatch_protocol_error: type 90 seq 3 [preauth]
を、それをsftp_new()
に届きます。このエラーが発生し、SSH_MSG_UNIMPLEMENTED
メッセージでフリーズします。
channel_open: Creating a channel 43 with 64000 window and 32768 max packet
packet_send2: packet: wrote [len=44,padding=19,comp=24,payload=24]
channel_open: Sent a SSH_MSG_CHANNEL_OPEN type session for channel 43
ssh_socket_unbuffered_write: Enabling POLLOUT for socket
ssh_packet_socket_callback: packet: read type 3 [len=12,padding=6,comp=5,payload=5]
ssh_packet_process: Dispatching handler for packet type 3
ssh_packet_unimplemented: Received SSH_MSG_UNIMPLEMENTED (sequence number 3)
EDIT2:
私は私がtutorialで混乱していた、サーバーに接続するために
ssh_key pKey;
int rc = ssh_pki_import_privkey_file(PC_PRIVATE_KEY_FILE, NULL, NULL, NULL, &pKey);
ssh_session my_ssh_session = ssh_new();
ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, PC_HOST);
ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, PC_USER);
ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &PC_PORT);
ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &PC_VERBOSITY);
rc = ssh_connect(my_ssh_session);
を次のコードを使用していました。私はサーバーに正しく接続するコードを書いていないかもしれません。
あなたがすべてで、通常のSFTPクライアントを使用してサーバーに接続することはできますか? –
@MartinPrikrylはい、私は 'ssh'、' sftp'と 'scp'を使ってサーバに接続できます。 – Amous
可能なすべてのログを収集し、質問に編集します。サーバ側のログ(SSHサーバとは何ですか?)、 'sftp -vv'出力、libsshログです。 –