問題タブ [jsch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JSch と GlobalScape を使用した SFTP
Java セキュア チャネル (JSCh) を使用して SFTP 接続を確立しようとしています。私のソフトウェア スタックは、Red Hat Enterprise Server 5.0、JRE 6.0、および JSch v0.1.44 です。主なサーバー ソフトウェア スタック (接続しようとしている) は、Windows Server 2008 と GlobalScape の最新バージョンです。それに接続しようとすると、
JSch ロギングを有効にすると、この同じ接続に対して次のようになります。
サーバーに接続しているように見えるので、実際にメッセージを送受信できますが、クライアントがサーバーのメッセージ提案とクライアントのメッセージ提案を一致させようとすると、例外がスローされます。
これを、以前の GlobalScape ソフトウェアおよび Windows Server 2003 を使用したサーバーへの接続に成功した JSch ログと比較します。
したがって、もう一度接続して SSH_MSG_KEXINIT を交換することができますが、ここではクライアントとサーバーの提案が一致し、例外はスローされません
sftp セキュリティは、公開/秘密キーとユーザー名/パスワードを使用しています。
WinSCP、Filezilla、および Linux コマンド ラインを使用して接続できます (Java アプリケーションが実行されている同じサーバーから)。
SFTP サーバーのシステム管理者と話し、ユーザー名とパスワードを使用してみましたが、同じ例外とログが表示されます。
システム管理者は、両方のサーバーの違いは GlobalScape のバージョンであり、現在は Microsoft 2008 Server であると教えてくれました。
それで、誰でもこれに取り組む方法について何か考えがありますか?
よろしくお願いします!
java - Java経由のssh
Java ssh ツールを使用して学校のアカウントに ssh 接続し、ファイルを探して削除しています。ただし、同じことを行う3つの関数を作成していますが、ファイルが異なるため、順番に行うのではなく、同じことを行う方法を探しています。ここにいくつかのコードがあります。基本的に、これをすべて1つのssh接続またはある種のフォークまたはマルチスレッドで行う方法があるかどうかを知りたいです。
ant - AntオプションタスクSSHExecおよびSCPの問題。クラスパスの問題?
コマンドラインから動作するようにAntスクリプト(現在MyEclipse内から使用中)を変更しているところです。私はこれを行っているので、誰でもプロジェクトをチェックアウトして、MyEclipseなしでビルドできます。私が遭遇している問題は、MyEclipseに舞台裏の依存関係が含まれていることです。これを行うには、ワークスペースのAnt構成を確認し、設定ダイアログで選択したライブラリに基づいてクラスパスをコンパイルします。簡単に言うと、MyEclipseを使用せずに、これらの依存関係を取得し、スクリプトを十分にスマートにして、それらを単独で含める必要があります。
私に頭痛の種を与えているタスクは、sshexecタスクとscpタスクです。これらは、実行するためにjschのバージョンを必要とするオプションのantタスクです。MyEclipseのAntクラスパスからjschを削除し、プロジェクト自体のlibフォルダー(lib / dev)に追加しました。com.jcraft.jsch.UserInfo
MyEclipseは、SSHExecクラスがjsch-0.1.44.jarの一部である依存クラスを見つけることができなかったとすぐに文句を言いました。
ビルドスクリプト内からAntのクラスパスを設定する方法がわかりません。スクリプトに要素を追加する次のコードがありますpath
が、タスクまたは別の要素に明示的に関連付けられていない限り、Antはこれを使用しないと思います。
taskdef
sshexecタスクとscpタスクを定義するために使用する必要があるようです。
MyEclipseはこれについて不平を言います、"taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec cannot be found: com/jcraft/jsch/UserInfo"
それは明らかにclasspathref、web-jarsにあります。そして、この不正な形式または誤って構成されたtaskdefのために、スクリプトで何も実行できません。
java - Linux / Mac / WindowsプラットフォームでMavenSCPワゴンを一貫して動作させる方法はありますか?
scp / sshとmavenに関するドキュメントが非常に貧弱であるため、私はさまざまなアプローチを試しました。基本的には、scpexeワゴンとscpワゴンの2つの主要なカテゴリに分類されます。通常、どちらもLinuxとMacの両方で問題なく動作しますが、Windowsでは、すべてのマシンで動作させる方法を見つけることができませんでした。
scpexeアプローチ(完全なパテをインストールしてパスに追加した後)-settings.xml構成:
scpアプローチ-settings.xml:
また、StrictHostKeyCheckingを「no」に設定しようとしましたが、セキュリティリスクは別として、特定のマシンでは機能しませんでした。
誰かがすべてのマシンで一貫して内部sshリポジトリを使用する方法を見つけましたか?
java - JSch シェルによる複数のコマンド
JSch ライブラリを使用して、SSH プロトコル経由で複数のコマンドを実行しようとしていました。しかし、私は立ち往生しているようで、解決策が見つかりません。このsetCommand()
メソッドは、セッションごとに 1 つのコマンドしか実行できません。しかし、Android プラットフォームの connectbot アプリのように、コマンドを順番に実行したいと考えています。これまでのところ、私のコードは次のとおりです。
コードはサーバーに接続されているようですが、出力がまったくないため、入力および出力配列バッファーに問題があると思います。サーバーとの間の入力と出力を適切に処理して、目的の出力を取得する方法を教えてください。
sftp - JSch を SFTP クライアントとして使用しているときにパッシブモードを有効にするにはどうすればよいですか?
JSch を SFTP クライアントとして使用していますが、セキュリティの制限により、パッシブ モードを有効にする必要があります。
しかし、パッシブ モードを有効にする方法が見つかりません。
誰かがこれを行う方法を教えてもらえますか?
java - JSch API をパスワードなしで Unix サーバーにログインさせるにはどうすればよいですか?
JSch APIを使用して、リモートの Unix サーバーでシェル スクリプトを実行する Java アプリケーションを作成しようとしています。
パスワードなしでサーバーにログインできるかどうか疑問に思っていました。もしそうなら - どのように?サーバーで認証キーのペアを生成し、アプリケーションにキー ファイルから情報を読み取らせる必要がありますか?
Java アプリケーションは Windows ステーションにあります。
java - JCTerm、Java アプレット端末エミュレーターのテストは、Eclipse では機能しますが、ブラウザーでは機能しません
変更されていないバージョンの JCTerm (ターミナル エミュレーター、アプレットとして使用できます。アプレット機能を使用したい) をテストすると、すべてが Eclipse の AppletViewer で正常に動作しているように見えますが、Web ページで結果の jar ファイルをテストすると、すべてのオプションが表示されます。黄色の警告記号が点滅するメッセージ ボックスを表示し、何もしません。一部のオプションでは、「この設定の前に接続を確立してください」というエラーが表示されます。
私が使用したいと考えているオプションは、[ファイル] メニューの [SHELL セッションを開く...] です。「Open SHELL Session...」オプションを試すと、アプレットの Java コンソールにこのようなものが表示されますが、これは直接関連しているようです。私はそれが何を意味するのかについての手がかりを持っていません。
このプログラムが正しく動作する例は、http://wiredx.net/jcterm/にあります。
ssh - jsch ChannelExec nohup で .sh スクリプトを実行し、いくつかのコマンドを「失う」
Windowsアプリケーションからjsch ChannelExecによって呼び出される、他の多くのスクリプトを接着する.shスクリプトがあります。
「nohup /foo/bar/foobar.sh >> /path/to/foo.log &」のようなコマンドを実行すると、すべての長期的なジョブ (データベース操作、ファイル処理など) が失われるようです。
ログファイルをチェックして、それらのエコーのものだけを見つけます(長時間の操作の前後、実行時間の計算など)。
アクセス許可 $PATH を確認し、ソース /etc/profile を .sh に追加しましたが、これらはどれも機能しません。
しかし、コマンドを通常どおり実行すると(同期実行、すべてのエコー出力をWindows上のJavaクライアントに出力)、すべてうまくいきます。
それは本当に具体的な問題です。経験のある人が私を助けてくれることを願っています。
少し早いですがお礼を。
ハン
java - 解凍せずにSFTP(Jsch)経由でgzip圧縮されたバイト配列を作成するにはどうすればよいですか?
(これはJschメーリングリストBTWにx-postedされました)。私はデータベースからデータを読み取り、それをbyte []として運んでいます(ミドルウェアコンポーネント間での転送用)。
そのbyte[]から、GZIPOutputStreamクラスを使用してローカルファイルシステムにgzip圧縮されたファイルを作成する方法を知っています。私がやりたいのは、JSchSFTPメソッドを使用してリモートファイルシステム上にgzip圧縮されたファイルを作成することです。
データのbyte[]をgzipで圧縮し、それをInputStreamとしてJSchライブラリに渡して、リモートファイルディレクトリに(.gzファイルとして)SFTPで送信します。ただし、配信されるファイルには予期しないEOFがあり、「ガンジップ」することはできません
gunzip:GlobalIssuer.xml.gz:予期しないファイルの終わり
リマインダー.gzファイルの内容であるbyte[]を転送していません。これは、データベースレコードの内容です。
(比較的)SSCCEは次のとおりです。
gzipContentメソッド:
バイト単位の生のコンテンツ(「コンテンツ」):
gzipで圧縮されたコンテンツ(「コンテンツ」)(バイト単位):
または代わりに:
GZIPOutputStreamおよびFileOutputStreamを使用してローカルファイルシステムに書き出された同等のgzip圧縮されたコンテンツ。
私は問題を見ていると思います。コンテンツは適切にgzip圧縮されていますが、gzip圧縮されたファイルに必要なチェックサムサフィックスを作成していません(ローカルファイルシステムでこれを行う場合、GZIPOutputStreamはFileOutputStreamと組み合わせて実行します)。だから基本的に私はこれを見逃しています:
Jschライブラリにそのトリックを実行するメソッドが表示されません。つまり、いくつかの基本的なポイントが欠落していると思います。