Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有意使用ConnectBot_Android_Ssh_Android Intent - Fatal编程技术网

Android 有意使用ConnectBot

Android 有意使用ConnectBot,android,ssh,android-intent,Android,Ssh,Android Intent,有没有办法通过intents访问ConnectBot功能?我想从我的应用程序启动ssh会话,并通过私钥/公钥进行身份验证,然后关闭会话。ConnectBot是否可以实现这一点?如果可以,我如何调用意图?遗憾的是,我没有找到有关此主题的任何文档:(这个问题的答案取决于您想使用ssh会话做什么:它是程序性的,还是您想向用户显示一个终端会话或控制台,用户可以在其中键入任意命令?第二个选项在很大程度上是很容易支持的,从研究中可以看出-应用程序有一个意图文件ter注册了与此模式匹配的ConsoleActi

有没有办法通过intents访问ConnectBot功能?我想从我的应用程序启动ssh会话,并通过私钥/公钥进行身份验证,然后关闭会话。ConnectBot是否可以实现这一点?如果可以,我如何调用意图?遗憾的是,我没有找到有关此主题的任何文档:(

这个问题的答案取决于您想使用ssh会话做什么:它是程序性的,还是您想向用户显示一个终端会话或控制台,用户可以在其中键入任意命令?第二个选项在很大程度上是很容易支持的,从研究中可以看出-应用程序有一个意图文件ter注册了与此模式匹配的
ConsoleActivity

  • 操作
    android.intent.action.VIEW
  • uri
    ssh://user@主机:端口/#昵称
…之后它不会关闭会话,但除此之外,它将执行您指定的所有操作,使用ConnectBot自己的连接基础结构,并使用用户在ConnectBot应用程序中注册的任何SSH密钥

或者,您可能正在谈论前一个选项:让您的应用程序以编程方式对SSH服务器执行某些特定命令

官方版本的ConnectBot目前不支持这一点。根据您的需求,您可能会想象,您只需使用服务器地址和您希望它执行的命令来启动ConnectBot的意图;这对ConnectBot来说实施起来并不太难,而且可以帮您省去lea的麻烦对ssh协议的了解太多了。然而,这种意图并不存在,如果它存在,那将是非常危险的,手机上的任何应用程序都可以使用它在远程服务器上使用用户凭据执行任意代码

存在的是我在几个月前的ConnectBot补丁版本中创建的支持Android Git客户端的意图:

org.openintents.ssh.BIND\u ssh\u AGENT\u服务

此修补版本的ConnectBot允许ConnectBot充当ssh代理-您的应用程序负责管理ssh连接,但您可以呼叫ConnectBot以获取必要的凭据-ConnectBot将让您知道其可用于连接的公钥,并签署数字证书身份验证所需。但基本上您使用的是绑定到ConnectBot的意图,即获得一个提供ssh代理功能的AIDL接口:

org.openintents.ssh.BIND\u ssh\u AGENT\u服务

作为安全预防措施,您的应用程序需要声明它使用此权限,否则将无法绑定到服务:

org.openintents.ssh.permission.ACCESS\u ssh\u AGENT

ConnectBot的补丁版本可从Android Market下载,网址为:

修补程序的源代码如下:

尽管这样做可以管理公钥/私钥,但实际上仍然需要在应用程序中实现ssh连接。我建议您使用库来支持ssh协议,请参见他们的简单“命令”连接示例:

Bouncy Castle crypto LIB通常在Java中用于提供加密算法,但是随Android提供的版本有缺陷,不容易覆盖-因此,您应该使用Spongy Castle LIB对BC LIB进行Android友好的重新打包:

看起来“协议详细信息”链接现在已断开。