OpenSSH

682 阅读3分钟

SSH

SSH是应用层基础上的安全协议,SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

SSH的登录过程

  1. 向手机发起连接请求
  2. 手机生成一对公钥和私钥,将公钥发送Mac(保存在.ssh文件夹的known_hosts文件中)
  3. Mac输入登录密码,使用收到的公钥加密,并发送给手机。
  4. 手机收到密码,解密验证,密码正确则连接成功。

image.png

中间人攻击

看似安全的登录过程其实存在一种隐患,那就是中间人攻击。在Mac电脑与手机之间,有一个中间人,拦截手机发给Mac的公钥,然后自己生成一对新的公私钥,将自己的公钥发送给Mac,Mac使用公钥加密登录密码,发送给手机,被中间人拦截,中间人使用私钥解密,拿到用户登录密码,再使用手机的公钥将密码加密,传给手机,登录成功。

image.png

OpenSSH

OpenSSH是安装在越狱手机上,打开手机SSH的工具。通过SSH,我们可以把手机作为服务器,把Mac作为客户端,来连接手机。

1.连接手机
ssh 用户名@手机IP
例:ssh root@192.168.1.30
默认密码:alpine

2.iOS中的两个用户:root,mobile
root:最高权限用户,可以访问任意文件
mobile:普通用户,只能访问改用户目录下文件/var/Mobile

3.修改用户密码
ROOT用户可以修改所有用户的密码
passwd 用户名

免密登录&公钥登录

正常情况下,我们每次使用ssh登录手机的时候,都是需要密码的,为了避免每次输入密码,我们可以使用免密登录。免密登录的原理是:在Mac中生成一对公私钥,将公钥发送给iPhone。每次登录时,iPhone会给Mac一个随机字符串,Mac使用私钥加密字符串并发送回iPhone,iPhone收到字符串解密成功后,直接登录成功。

  1. Mac本地生成一对公私钥,生成后在当前用户路径下的.ssh文件夹中(.ssh是隐藏文件夹),id_rsa和id_rsa.pub &ssh-keygen

  2. 拷贝公钥到手机中,需要输入手机密码,默认alpine,拷贝成功后,下次不用输入密码,可以直接登录 &ssh-copy-id 用户名@服务器IP

上传成功之后,手机中会多一个.ssh的隐藏目录,目录中有一个authorized_keys文件,这就是我们上传的公钥。在这里有一个问题,有的电脑不是拷贝的id_rsa.pub,而是自动生成一对新的公私钥,但是不影响免密登录。

image.png

取别名登录

在.ssh文件夹中,创建一个config文件,在文件中配置手机的别名和ip地址,下次登录可以直接使用别名登录。

Host i6                   别名
Hostname 192.168.x.x      IP地址
User root                 用户

登录时,可以直接使用命令&ssh i6

USB登录

前面连接手机,使用的其实是wifi连接的,在手机的环境中,输入指令明显感觉到有延迟,我们可以通过USB来连接手机解决延迟问题。把手机插到电脑上,可以通过端口映射,建立连接。使用libimobiledevice,如果没有,可以使用brew install libimobiledevice安装,输入iproxy 12345 22,此时已经做好了端口映射。输入指令ssh -p 12345 root@localhost,就可以登录到手机。这里有一个注意点,当我们换一个手机继续登录,那么就会报错,触发中间人攻击,因为两次登录的IP没变,都是localhost,known_hosts中的IP地址与公钥是一一对应的关系.但是第二次登录时,因为手机变了,所以公钥也变了,known_hosts中IP对应的公钥与这个手机中的公钥不同了,所以触发中间人攻击。我们需要把known_hosts中的ip与公钥删除,才能连接。