ten*_*sai 7 ssh android android-intent
有没有办法通过意图访问ConnectBot功能?我想从我的应用程序中启动一个ssh-session并通过Private/Public Key进行身份验证,然后关闭会话.ConnectBot是否可以实现这一点?如果可以,我该如何调用Intents?可悲的是,我没有找到关于这个主题的任何文件:(
这个问题的答案取决于你想要使用什么ssh会话:它是程序化的东西,还是你想向用户显示他们可以输入任意命令的终端会话或控制台?第二个选项在很大程度上非常容易支持,正如您可以从研究ConnectBot清单中看到的那样- 该应用程序具有注册的intent过滤器,该过滤器ConsoleActivity匹配此模式:
android.intent.action.VIEWssh://user@host:port/#nickname......它不会事后关闭会话,但除此之外,它会指定使用ConnectBot自己的连接基础设施所做的一切,并使用用户已对ConnectBot应用程序内注册的SSH密钥.
或者,您可能正在讨论前一个选项:让您的应用程序以编程方式对SSH服务器执行某些特定命令.
ConnectBot官方发布的任何方式目前都不支持此功能.根据您的要求,您可能会想象您只需将ConnectBot的意图与服务器的地址和您希望它执行的命令一起启动; ConnectBot实现起来并不会太难,它可以让你省去了解ssh协议的过多麻烦.但是,这个意图并不存在,如果它确实存在,那将是非常危险的,手机上的任何应用程序都可以使用它来使用远程服务器上的用户凭据执行任意代码.
什么确实存在,这是我的意图在ConnectBot的一个补丁版本创建的几个月前,支持地理信息技术,Git的客户端Android版:
org.openintents.ssh.BIND_SSH_AGENT_SERVICE
此补丁版本的ConnectBot允许ConnectBot像ssh-agent一样运行 - 您的应用程序负责管理ssh连接,但您可以调用ConnectBot以获取必要的凭据 - ConnectBot将让您知道它可用于哪些公钥连接,并将签署身份验证所需的数字挑战.协议的细节在OpenIntents.org上,但基本上你使用意图绑定到ConnectBot,获得一个提供ssh-agent功能的AIDL接口:
org.openintents.ssh.BIND_SSH_AGENT_SERVICE
作为安全预防措施,您的应用需要声明它使用此权限,否则它将无法绑定到该服务:
org.openintents.ssh.permission.ACCESS_SSH_AGENT
可以从Android电子市场下载补丁版ConnectBot:
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
Bouncy Castle加密库通常在Java中用于提供加密算法,但是随Android提供的版本已经瘫痪而且不容易被覆盖 - 因此您应该使用Spongy Castle库来对Android库进行Android友好的重新打包:
https://github.com/rtyley/spongycastle
| 归档时间: |
|
| 查看次数: |
2642 次 |
| 最近记录: |