com.jcraft.jsch.JSchException:身份验证取消
我试图编写一个Ant脚本来通过端口隧道检索URL。com.jcraft.jsch.JSchException:身份验证取消
<project default="main">
<target name="main">
<sshsession host="xxxx"
username="xxxx"
password="xxxx">
<LocalTunnel lport="1080" rhost="xxxx" rport="80"/>
<sequential>
<get src="http://localhost:1080/xxxx" dest="/tmp/xxxx"/>
</sequential>
</sshsession>
</target>
</project>
但它不工作,当我使用一个密钥文件,像这样:
<sshsession host="xxxx"
username="xxxx"
keyfile="/Users/xxxx/.ssh/id_dsa"
passphrase="xxxx">
<LocalTunnel lport="1080" rhost="xxxx" rport="80"/>
<sequential>
<get src="http://localhost:1080/xxxx" dest="/tmp/xxxx"/>
</sequential>
</sshsession>
它,当我使用一个密码(xxxx'd了对隐私的名字)的伟大工程
我得到这个异常:
/tmp/build.xml:8: com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:451)
at com.jcraft.jsch.Session.connect(Session.java:150)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:223)
- 我敢肯定,我用c orrect keyfile(我尝试使用错误的名称,这给了一个合法的FileNotFoundException)。
- 我可以从命令行成功ssh而不需要提示输入密码。
- 我确定我正在使用密钥文件的正确密码。
这个错误的原因是什么,我该怎么办?
我调试了代码。这是失败的,因为我的私钥失败了身份验证; JSch无声地回到了密码认证,这被取消了,因为我没有指定密码。
JSch错误处理很糟糕。重新执行您的步骤,重新生成(单独的)私钥文件,使用ssh -i
以确保您使用正确的文件,并保持手指交叉。
现在有一个Jsch的新品种。异常处理更全面。没有更多的吞咽或默认。前往https://github.com/vngx/vngx-jsch查看。如果某些事情按照您的预期行不通,请将其作为问题提出来,或者在我们积极维护它时发送拉取请求。我们也希望尽快在Maven中心回购中获得它。
这个声明与这个问题上写的内容矛盾,说vngx-jsch不是替换ant任务的一个下拉选择https://github.com/vngx/vngx-jsch/issues/10 – opticyclic 2013-04-10 17:47:53
这个评论没有任何形式表明它是替代品的下降......它说,如果某件事情按你期望的方式工作,那就意味着基于不基于JSCH的文档。因此,第一行:现在有一个全新的Jsch FORK。该问题因为按照设计工作而关闭。 – Scott 2013-04-11 15:54:49
我在使用sshexec任务时遇到同样的问题。我也添加了密码语句attibute,它工作正常。为您的私钥创建一个密码并将其添加为您的任务中的一个属性。如果您在Windows上使用puttygen生成密钥,请不要忘记将私钥转换为打开的ssh格式。
我今天有类似的问题。所以我想我会分享我的解决方案。我得到了同样的例外,但问题是我的密码中有变音符号。在没有它的情况下选择新密码后,一切正常。
要使jsch
连接正常工作,您必须指定到文件known_hosts
和包含私钥的文件的路径。这是通过使用setKnownHosts
和addIdentity
方法完成的。
jsch.setKnownHosts("/path/to/.ssh/known_hosts");
jsch.addIdentity("/path/to/.ssh/id_rsa");
如果该键有一个密码,你可以把它添加到addIdentity
参数列表:
jsch.addIdentity("/path/to/.ssh/id_rsa", myPassPhrase);
唉,我下载的源,它似乎是Jsch燕子的原因JSchAuthCancelException,并且只报告“AuthCancel”。任何人都想调试它? – 2010-05-25 00:28:41