Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not support ECDSA key files to login a Ubuntu Server #321

Open
nightstream opened this issue Jul 15, 2024 · 1 comment
Open

Not support ECDSA key files to login a Ubuntu Server #321

nightstream opened this issue Jul 15, 2024 · 1 comment

Comments

@nightstream
Copy link

System:

Windows 11 -> Ubuntu 24.04 LTS
ii openssh-server 1:9.6p1-3ubuntu13.4 amd64 secure shell (SSH) server, for secure access from remote machines

version:

ssh2 = "0.9.4"

code

    pub fn login(&mut self) {
        /* 登录 */
        let tcp = TcpStream::connect(format!("{}:{}", self.host, self.port)).expect(format!("TCP创建失败: {}:{}", self.host, self.port).as_str());
        self.session.set_tcp_stream(tcp);
        self.session.handshake().expect(format!("TCP握手失败: {}:{}", self.host, self.port).as_str());

        if self.prikey.chars().count() > 0 {
            // 使用证书认证
            let prikeyf = Path::new(self.prikey.as_str());
            self.session.userauth_pubkey_file(&self.username, None, prikeyf, Some(&self.password)).expect("证书认证失败");
        } else {
            // 使用密码认证
            self.session.userauth_password(&self.username, &self.password).expect("密码认证失败");
        }
        assert!(self.session.authenticated());
    }

If I use an RSA key file, it works well, but when I use an ECDSA key file, it runs into an error like this:

证书认证失败: Error { code: Session(-1), msg: "unknown error" }
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library\std\src\panicking.rs:645
   1: core::panicking::panic_fmt
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library\core\src\panicking.rs:72
   2: core::result::unwrap_failed
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library\core\src\result.rs:1654
   3: enum2$<core::result::Result<tuple$<>,ssh2::error::Error> >::expect<tuple$<>,ssh2::error::Error>
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6\library\core\src\result.rs:1034
   4: sync_ssh_dir::sshdirsyncer::SshdirSyncer::login
             at .\src\sshdirsyncer.rs:93
   5: sync_ssh_dir::sshdirsyncer::SshdirSyncer::run_sync
             at .\src\sshdirsyncer.rs:260
   6: sync_ssh_dir::main
             at .\src\main.rs:14
   7: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6\library\core\src\ops\function.rs:250
   8: core::hint::black_box
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6\library\core\src\hint.rs:337
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: process didn't exit successfully: `target\debug\sync_ssh_dir.exe` (exit code: 101)
@yodaldevoid
Copy link
Collaborator

This may have been fixed by #334.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants