如何使用公钥身份验证访问 Android 上的 ssh 服务器?

如何使用公钥身份验证访问 Android 上的 ssh 服务器?

我的 android 4.4.2(它很旧,但无法升级)手机通过 SimpleSSHD 应用程序运行 SSH 服务器。它在每次登录时都会生成不同的随机密码,因此对于我作为客户端用户来说非常不方便。所以我想使用公钥认证。

之前我已经生成了一对公钥和私钥来访问 SSH 服务器。我猜重复使用密钥对是可以的,所以我将公钥文件复制到android手机上:

$ ssh-copy-id -p 2222 192.168.1.87
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/t/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 
restorecon: invalid option -- F
usage:  restorecon [-nrRv] pathname...

之后我仍然需要输入服务器生成的随机密码才能登录。

复制公钥文件到android手机不行吗?

公钥文件应该放在 Android 手机上的哪个目录中?

谢谢。

答案1

这不是安卓的问题。我相信输入密钥的约定~/.ssh/authorized_keys来自 OpenSSH。我不相信它是标准(RFC)的一部分。简单SSHD有不同的约定

快速开始

  • 安装 SimpleSSHD。
  • 在任何要连接到 Android 设备的计算机上,将端口设置为 2222。使用 OpenSSH,可以通过将以下行放入 ~/.ssh/config 来完成此操作:

    Host myphone
    Port 2222
    
  • 启动 SimpleSSHD,并在“设置”中启用“启动时启动”,然后首次手动启动它。

  • 在主目录中创建authorized_keys(不要使用ssh-copy-id
  • 可选地制作 .profile

由此推断,您的授权密钥文件~/authorized_keys不应该是~/.ssh/authorized_keys.

ssh-copy-id似乎假设每个服务器都是 OpenSSH 服务器。由于您已经使用设置了公钥ssh-copy-id,我只需登录并运行:

mv ~/.ssh/authorized_keys ~

相关内容