只要你的本地機器有一臺運行SSH服務器(和你的應用程序有必要的登錄憑據),您可以使用JSch連接到本地計算機,太 - 只是表明localhost
(或127.0.0.1
)作爲主機名爲連接。
雖然這會產生一些開銷,因爲您正在加密和解密所有數據,而這在本地執行某些命令並不是必須的。 (在另一方面,這將允許您以其他用戶,對此你,否則將需要在Windows下像sudo
或su
,或者RunAs
運行命令。)
JSch上的頂部實現setOutputStream
和setErrStream
相應的get...
方法 - 它在內部使用類似於PipedInputStream的東西,以及在這些流之間鏟取數據的獨立線程。
由於JSch是開源的,你可以簡單地看一下如何做到這一點(在Channel
類,如果我沒記錯的話),並複製相關的方法向類中做同樣的事情了Process
。
有沒有辦法告訴JSch不要加密數據?
您可以使用none
密碼,例如,沒有加密。這在所有通用客戶端和服務器上都是禁用的(因爲它違背了SSH的一半目的),但通過正確的配置,您可以啓用它。在JSch你可以使用
session.setConfig("cipher.s2c", "none,..."); // server to client
session.setConfig("cipher.c2s", "none,..."); // client to server
(這個配置選項的客戶端支持所有選項的列表 - 見the documentation of setConfig
所有受支持的值,服務器通常會選擇這個名單,它也支持的第一個。強制不加密(或取消連接),僅列表none
。)
我不知道如何在SSH服務器中啓用此功能 - 請閱讀服務器的文檔。 (並且如果可能的話,僅對本地主機啓用它。)
推薦使用它的方式是僅在認證後切換到none
密碼(因此認證仍然是加密的),但對於本地主機,這可能不是必需的。 (您可以使用session.rekey()
在更改配置後切換密碼(和密鑰)。)
有沒有辦法告訴JSch不要加密數據? –
我意識到ssh是爲了加密,但仍然 –
@Martin:我添加了一些關於非密碼的東西。 –