在哪里添加SSH密钥以允许连接到Android上的远程服务器?


10

我使用的是自定义的自定义Android内核(Gingerbread),并且能够使用busybox和终端仿真器应用程序通过密码验证连接到远程SSH服务器。我希望能够使用SSH密钥进行自动登录;这可能吗?如果是这样,我应该把我的私钥放在哪里?

Answers:


10

它并不是完全无缝的,但是sshbusybox提供的二进制文件(至少是我的)支持该-i标志,因此您可以将密钥放在任何需要的地方并使用它:

ssh -i /path/to/key_file joeuser@somehost.com

与之相关的手册页条目-i(请注意,关于默认路径的信息在Android上可能不相同):

-i identity_file

         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and
         ~/.ssh/id_rsa for protocol version 2.  Identity files may also be
         specified on a per-host basis in the configuration file.  It is
         possible to have multiple -i options (and multiple identities
         specified in configuration files).  ssh will also try to load
         certificate information from the filename obtained by appending
         -cert.pub to identity filenames.

谢谢,我曾想过这一点,但从未尝试过。似乎很奇怪,ssh命令没有地方可以找到.ssh目录……也许是因为没有设置$ HOME?
yuttadhammo 2012年

2
@Yuttadhammo:奇怪的是$HOME(对于root)/data在我的手机上设置为,但ssh似乎忽略了我尝试在此处设置的任何目录。我从来没有真正弄清楚为什么会这样,但是我也不需要真正去研究它。
eldarerathis 2012年

@Yuttadhammo在我的手机中,echo $HOME什么也没有返回(即使是root用户也是如此)。如果您也是这种情况,这也是SSH客户端默认情况下看不到密钥的原因。但是,有了-iflag,您可以覆盖默认路径,因此不必寻找$ HOME。如果您精简的SSH客户端支持此方法,则这是正确的解决方案。因此,将密钥放在sdcard上后再尝试。如果失败,除非更改SSH客户端,否则没有其他方法。
Android Quesito 2012年

大。为我工作。
user20203293928832 2015年

6

安装并运行ConnectBot(专用的SSH客户端)。点击/按菜单键。在菜单中,点按Manage Pubkeys。在下一个屏幕上,再次按/点击菜单键。在菜单中,点按Import


谢谢,我实际上就是这么做的-漂亮的应用程序;有没有办法简单地将钥匙放在某个地方并让busybox拿起它?
yuttadhammo 2012年

@Yuttadhammo我不认为Busybox的默认包装提供了SSH客户端。您能否更详细地说明您的SSH客户端(可能是外部实用程序)?
Android Quesito 2012年

另外,请记住..由于busybox小程序是原始小程序的精简版本,因此您的命令行SSH客户端可能不支持使用密钥进行身份验证,但是这种可能性很小。告诉我您的SSH客户端。
Android Quesito 2012年

谢谢,ConnectBot是我将要使用的解决方案,但是-i标志确实更接近回答问题。
yuttadhammo 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.