簡體   English   中英

使用 j2ssh-maverick-1.5.5.jar 的公鑰身份驗證

[英]Public Key Authentication using j2ssh-maverick-1.5.5.jar

下面是使用公鑰身份驗證連接到遠程服務器的代碼片段。 我使用 Putty Key Gen 工具生成了公鑰和私鑰,並根據需要修改了 .ssh 文件夾中的 authorized_keys 文件。 我能夠使用 Putty 連接到遠程服務器並提供提示的密碼。 但是,我無法通過以下代碼進行連接。 它告訴我 -

java.io.IOException:無法讀取 PuTTY 密鑰! 無效的加密密鑰

對此有什么想法嗎?

SocketTransport transport = new SocketTransport(hostname, port);
                    ssh = con.connect(transport, username);

                    FileInputStream in;
                    ByteArrayOutputStream out;
                    try 
                    {
                        in = new FileInputStream("E:\\Projects\\RBL\\Finacle Interface\\Finacle\\AuthenticationKeys\\RBLTestPrivateKey.ppk");
                        out = new ByteArrayOutputStream();
                         int read;
                         while((read = in.read()) > -1)
                           out.write(read);

                         in.close();

                         SshPrivateKeyFile pkf = SshPrivateKeyFileFactory.parse(out.toByteArray());
                         SshKeyPair pair = pkf.toKeyPair("calypso");

                         PublicKeyAuthentication pk = new PublicKeyAuthentication();
                         pk.setPrivateKey(pair.getPrivateKey());
                         pk.setPublicKey(pair.getPublicKey());

                         if(ssh.authenticate(pk)==SshAuthentication.COMPLETE)
                         {
                             Log.info(LOG_CATEGORY, "Authentication completed");
                             session = ssh.openSessionChannel();
                             return session;
                         }

                    } 
                    catch (IOException | InvalidPassphraseException | SshException e1) 
                    {
                        e1.printStackTrace();
                    }

                    /*PasswordAuthentication pwd = new PasswordAuthentication();
                    pwd.setPassword(this.password); 
                    if(ssh.authenticate(pwd)==SshAuthentication.COMPLETE) 
                    {
                        session = ssh.openSessionChannel();
                        return session;
                    }*/
                }
                catch(Exception e)
                {
                    isConnected = false;
                    e.printStackTrace();
                }

如果您將密鑰對更改為 OpenSSH 密鑰,它可能會工作...

SshPrivateKeyFile pkf = SshPrivateKeyFileFactory.parse(new FileInputStream("E:\\Projects\\RBL\\Finacle Interface\\Finacle\\AuthenticationKeys\\TestRBL"));
                         SshKeyPair pair = pkf.toKeyPair("calypso");

解決了我的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM