gpt4 book ai didi

java - 如何使用SSHJ实现SSH用户/密码认证

转载 作者:行者123 更新时间:2023-12-02 02:49:24 25 4
gpt4 key购买 nike

我正在尝试创建一个 Android 应用程序,通过 SSH 连接到 Dell PowerConnect 交换机,以便根据命令执行简单的任务(例如,关闭/打开端口的 POE 以远程重置 POE 设备)。我正在使用 SSHJ 库,但无法对其进行身份验证。

我终于找到了如何让 SSHJ 在失败后列出接受的身份验证类型,并且它返回一个选项(公钥)。然而,通过 Linux 和 putty 的 SSH 连接都使用用户名/密码身份验证。戴尔交换机也没有提供任何东西来改变它对我发现的连接尝试的响应方式(这并不奇怪,但我检查了一下以防万一)。

这是我的代码:

    final SSHClient ssh = new SSHClient();

Command cmd = null; //declare

try {
ssh.loadKnownHosts();
} catch (IOException e) {
e.printStackTrace();
}

ssh.addHostKeyVerifier(new PromiscuousVerifier());
ssh.connect(hostname,port);

Session session = null;

try {

ssh.authPassword(username, password);

session = ssh.startSession();

我的错误日志显示:

I/TransportImpl: Client identity string: SSH-2.0-SSHJ_0.27.0  
I/TransportImpl: Server identity string: SSH-2.0-OpenSSH_5.9p1.RL
W/System.err: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
at net.schmizz.sshj.SSHClient.auth(SSHClient.java:230)
at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:291)
at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:261)
W/System.err: at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:245)
at net.metalx.myapplication.MainActivity.executeRemoteSSHJ(MainActivity.java:405)
at net.metalx.myapplication.MainActivity$2.doInBackground(MainActivity.java:216)
at net.metalx.myapplication.MainActivity$2.doInBackground(MainActivity.java:204)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
I/TESTRESULT: publickey
I/TransportImpl: Disconnected - BY_APPLICATION

有没有办法强制进行用户名/密码身份验证?还是我看错了?

最佳答案

您无法在不支持密码验证的服务器上强制执行密码验证。您提供的输出似乎表明服务器仅支持公钥身份验证。

要么是这样,要么除了用户名/密码之外还需要公钥身份验证。

关于java - 如何使用SSHJ实现SSH用户/密码认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57119916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com