目次
Jschライブラリを使ったssh転送処理でエラー failed to send channel request
事象
Jschライブラリを使ったssh転送処理でエラー
使用環境
クライアント win7
サーバ ubuntu
WinSCPとかコマンドプロンプトからSSH接続はできる状態。
クライアント側からサーバ側に向けてのSSH接続処理をSTSから実行した。
鍵方式での接続で、サーバ側で生成した秘密鍵をクライアント側で使用しました。
エラー内容
com.jcraft.jsch.JSchException: failed to send channel request at com.jcraft.jsch.Request.write(Request.java:65) at com.jcraft.jsch.RequestSftp.request(RequestSftp.java:47) at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:237) at com.jcraft.jsch.Channel.connect(Channel.java:152) at com.jcraft.jsch.Channel.connect(Channel.java:145) at sftp.SFTP_transfer.SftpSample.connectChannelSftp(SftpSample.java:151) at sftp.SFTP_transfer.SftpSample.putFile(SftpSample.java:46) at sftp.SFTP_transfer.App.main(App.java:23)
原因
Javaの記述ではなく、サーバ側の設定に問題がある場合が多い。
解決策
サーバ側(ubuntu)上のsshd_configファイルを編集する。
>sudo vi /etc/ssh/sshd_config
「Subsystem sftp internal-sftp」
を末尾に追記。
>sudo /etc/init.d/ssh restart
再度STS上からプログラムを実行すると無事接続できました。
参考
Jsch error – failed to send channel request
JavaプログラムからのSSH接続ができるライブラリってもう枯れている技術なのかあまりなくて、
一番使われているっぽいJschライブラリも記事が少なくてエラー対処でググるのとか辛い・・・