2011-11-29 16 views
7

有什麼方法通過意圖訪問ConnectBot功能?我想從我的應用程序中啓動ssh會話並通過私鑰/公鑰進行身份驗證,然後關閉會話。 ConnectBot有可能嗎?如果是,我該如何調用Intents?可悲的是,我沒有找到關於此主題:(將ConnectBot與Intents一起使用

回答

9

的這個問題的答案取決於你要使用SSH會話什麼任何文件:這是什麼程序,你要顯示的用戶終端會話或控制檯,他們可以輸入任意命令?第二個選項大部分很容易支持,你可以從研究ConnectBot manifest - 應用程序有一個意向過濾器註冊ConsoleActivity匹配這種模式:

...它不會事後關閉會話,但除此之外,它盡你指定,使用ConnectBot自己的連接基礎設施,並採用任何用戶在ConnectBot應用程序中註冊的SSH密鑰。你的應用程序,以通過編程方式對SSH服務器執行一些特定的命令

或者,你可能會談論選擇前者。

ConnectBot的官方版本目前不支持這種方式。根據您的要求,您可能會想象您只是將ConnectBot意圖與服務器的地址以及您希望執行的命令聯繫起來;對於ConnectBot的實現來說不會太困難,它可以節省您對ssh協議學習太多的頭痛問題。然而,這個意圖不存在,如果它確實是這將是非常危險的,手機上的任何應用程序都可以使用它來執行遠程服務器上的用戶憑據的任意代碼。

什麼確實存在是這個意圖我在ConnectBot的一個補丁版本創建的幾個月前,支持Agit,Git的客戶端Android版:

org.openintents.ssh.BIND_SSH_AGENT_SERVICE

ConnectBot的這個補丁的版本允許ConnectBot作爲一個ssh代理 - 您的應用程序負責管理ssh連接,但您可以調出ConnectBot以獲取必要的憑據 - ConnectBot會讓您知道它可用於連接的公鑰,並且將簽署數字challe需要認證。該details of the protocol are on OpenIntents.org,但基本上你使用的意圖綁定到ConnectBot,獲得AIDL接口,它提供了SSH代理功能:

org.openintents.ssh.BIND_SSH_AGENT_SERVICE

爲了安全起見,您的應用需要聲明的是,它使用此許可,否則將無法綁定到服務:

org.openintents.ssh.permission.ACCESS_SSH_AGENT

ConnectBot的修補版本可以在這裏下載關閉Android市場:

https://market.android.com/details?id=com.madgag.ssh.agent

該修補程序的源代碼是在這裏:

http://code.google.com/r/robertotyley-connectbot-ssh-agent/source/list?name=ssh-agent

雖然這需要公共/私有密鑰管理的照顧,但它仍然留給你實際上不必實現內的ssh連接你的應用。我建議的sshj庫SSH協議的支持,看到一個簡單的「命令」連接的例子:

https://github.com/shikhar/sshj/blob/v0.6.1/src/main/java/examples/Exec.java

的充氣城堡加密庫通常在Java中用於提供加密算法,但是版本提供與Android是殘缺的,不容易覆蓋 - 因此你應該使用海綿城堡庫的BC庫的一個Android友好重新包裝:

https://github.com/rtyley/spongycastle

+0

貌似「協議的詳細信息」鏈接現在是死。 – Equidamoid

相關問題