有什麼方法通過意圖訪問ConnectBot功能?我想從我的應用程序中啓動ssh會話並通過私鑰/公鑰進行身份驗證,然後關閉會話。 ConnectBot有可能嗎?如果是,我該如何調用Intents?可悲的是,我沒有找到關於此主題:(將ConnectBot與Intents一起使用
回答
的這個問題的答案取決於你要使用SSH會話什麼任何文件:這是什麼程序,或你要顯示的用戶終端會話或控制檯,他們可以輸入任意命令?第二個選項大部分很容易支持,你可以從研究ConnectBot manifest - 應用程序有一個意向過濾器註冊ConsoleActivity
匹配這種模式:
- action:
android.intent.action.VIEW
- URI:
ssh://[email protected]:port/#nickname
...它不會事後關閉會話,但除此之外,它將盡你指定,使用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友好重新包裝:
- 1. 如何將List與Intents結合使用?
- 2. 如何將Selenium與「chart.js」一起使用
- 3. 如何將CommandParameter與RelayCommand一起使用?
- 4. 將RedirectView.as_view與i18n_patterns一起使用
- 5. 將ORMLite與片段一起使用
- 6. 將PreferenceScreen與applicationIdSuffix一起使用
- 7. 將JNA與IBM J9 JVM一起使用
- 8. 如何將rst.FindFirst與rst.NoMatch一起使用?
- 9. 將XML與Activity的setContentView一起使用()
- 10. 將MySQLi與PDO一起使用?
- 11. 如何將System.IO.Unsafe與TVars一起使用?
- 12. 將PageMenu與Storyboards一起使用Swift 3
- 13. 將FreeMarker與Apache Sling一起使用
- 14. 如何將LINQ與ServiceModel.Channels.Message一起使用
- 15. 將Google OAuth2與Flask一起使用
- 16. 如何將DataTemplateSelector與DataGridBoundColumn一起使用?
- 17. 如何將apoc.load.csv與apoc.create.node一起使用
- 18. 如何將SendTweetWithMedia與TweetSharp一起使用?
- 19. 如何將RKValueTransformers.h與RestKit一起使用
- 20. 如何將gprof與autotools一起使用?
- 21. 如何將FocusTraversalPolicy與MigLayout一起使用?
- 22. 無法將TouchImageView與ViewPager一起使用
- 23. 將JSplitPane與AWT組件一起使用
- 24. 如何將SQLAlchemy與buildozer一起使用?
- 25. 將Twitter Bootstrap與Wordpress一起使用
- 26. 將nextLIne()與nextInt()一起使用
- 27. 將file_get_contents與數組一起使用?
- 28. 如何將socketRocket與socket.io一起使用?
- 29. 如何將CXF與SDO一起使用?
- 30. 如何將UIBezierPath與CoreAnimation一起使用?
貌似「協議的詳細信息」鏈接現在是死。 – Equidamoid