iOS 10.X无法使用openssh的解决方案


iOS 10.X无法使用openssh的解决方案

原因检查:
安装mterminal,用于在ios上执行命令
1.执行ps aux | grep sshd发现sshd没有启动
2.mterminal执行/usr/sbin/sshd -d报错如下(-d为调试模式):

Could not load host key: /etc/ssh/ssh host key
Could not load host key: /etc/ssh/ssh host rsa key
Could not load host key: /etc/ssh/ssh host dsa key
Disabling protocol version 2. Could not load host key 
sshd: not hostkeys available -- exiting  

这说明安装openssh时没有生成必须的证书,所以sshd无法启动,所以下一步来生成证书
3.生成公钥信息,mterminal执行:

ssh-keygen -f /etc/ssh/ssh_host_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

4.启动sshd并连接

mterminal执行  /usr/sbin/sshd -p 2222
xshell执行     ssh x.x.x.x:2222

10.X上发现不同于之前系统的问题:

  • 尝试用22端口启动sshd会发现失败,原因是端口被占用,具体哪个进程占得无法确定,因为没有可用的lsof
  • ssh连接上后有时会莫名其妙断开,猜测是系统定期重置无访问的端口。为了解决这个问题,需要在xterm中进行相应设置(对应配置ssh_config)
  1. 会话属性=>连接
    勾选:连接异常关闭时自动重新连接
    间隔1秒 限制48分钟
  2. 会话属性=>连接=>保持活动状态
    勾选:链接会话期间发送保持活动状态消息
    间隔16秒
    勾选:网络空闲时发送字符串
    间隔16秒 字符串
    勾选:网络为空闲状态时发送TCP保持活动数据包

网上对于这个问题,采取了安装另一个工具:dropbear
具体方式:https://www.jianshu.com/p/91e0c22a6ea7
安装dropbear后执行dropbear -R -p 2345,使其后台运行。这里同样,由于22端口被其他进程占用,因此需要换端口