私は、ポート·トンネリングを経由してURLを取得するためのAntスクリプトを記述しようとしている.
私は(名前はプライバシーのために出xxxx'd)パスワードを使用している場合、それは素晴らしい作品.
<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>
私は、この例外が出ます:
/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)
何がこのエラーの原因だと私はそれについて何ができますか?
私は、コードをデバッグする.私の秘密鍵は、認証に失敗したため、これは失敗した.私はパスワードを指定しなかったため、JSchは黙って、キャンセルされたパスワード認証に戻って落ちた.
JSchのエラー処理は、多くのことを吸う.あなたのステップをたどる、(別々の)秘密鍵ファイルを再生成し、あなたが正しいファイルを使用している保証する
ssh -i
使用し、交差した指を保つ.
sshexecタスクを使用している間、私は同じ問題を持っていた.私もパスフレーズ属性を、追加し、それがうまく働いた.秘密鍵のパスフレーズを作成して、タスクの属性としてこれを追加.また、Windows上でPuTTYgenを使用してキーを生成した場合、SSH形式を開くには、秘密鍵を変換することを忘れないでください.
今日は、同様の問題があった.だから、私は私の解決策のaswellを共有すると思った.私は同じ例外が発生しましたが、問題は、私は自分のパスワードの中にウムラウトを持っていたという事実だった.それなしで、新しいパスワードを選択した後、すべてがうまく働いた.
仕事に
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のブランドの新しいフォークがあります.例外処理がはるかに包括的である.これ以上の嚥下したり不履行.それをチェックアウトする https://github.com/vngx/vngx-jsch へ向かう.何かがあなたが期待どおりに動作しない場合は、問題として上げてください、または我々は積極的にそれを維持しているようにプル要求を送信します.また、すぐにMavenの中央リポジトリにそれを得るために探している.