ローカル マシンで SSH サーバーが実行されている (そしてアプリケーションに必要なログイン資格情報がある) 限り、JSch を使用してローカル マシンに接続することもできます。接続のホスト名としてlocalhost
(または) を指定するだけです。127.0.0.1
ただし、すべてのデータを暗号化および復号化しているため、これにはオーバーヘッドが発生します。これは、一部のコマンドをローカルで実行するために実際には必要ありません。(一方、これにより、別のユーザーとしてコマンドを実行できるようになります。そうしないと、 Windows では、 またはsudo
のようなものが必要になります。)su
RunAs
JSchは、対応するメソッドの上にsetOutputStream
andを実装します。これは、内部で PipedInputStream に似たものを使用し、それらのストリーム間でデータをシャベルする別のスレッドを使用します。setErrStream
get...
JSch はオープン ソースであるため、これがどのように行われるか (Channel
私の記憶が正しければクラス内) を確認し、関連するメソッドをクラスにコピーして、Process
.
JSch にデータを暗号化しないように指示する方法はありますか?
none
暗号を使用できます。たとえば、暗号化は使用できません。これは、すべての汎用クライアントおよびサーバーでデフォルトで無効になっています (SSH の目的の半分を無効にするため) が、適切な構成で有効にすることができます。JSchでは使用できます
session.setConfig("cipher.s2c", "none,..."); // server to client
session.setConfig("cipher.c2s", "none,..."); // client to server
(この構成オプションは、クライアントがサポートするすべてのオプションのリストです。サポートされているすべての値については、のドキュメントをsetConfig
参照してください。サーバーは通常、このリストの中でサポートされている最初のオプションを選択します。暗号化を強制しない (または接続をキャンセルする) には、リストのみnone
。)
SSH サーバーでこれを有効にする方法がわかりません。サーバーのドキュメントを読んでください。(可能であれば、localhost に対してのみ有効にします。)
推奨される使用方法は、認証後にのみ暗号化に切り替えることですnone
(したがって、認証はまだ暗号化されています) が、localhost の場合、これは必要ない場合があります。(session.rekey()
構成を変更した後、暗号 (およびキー) を切り替えるために使用できます。)