SSH
- secure shell 安全外壳协议,是一种可以为远程登录提供安全保障的协议.
- 可以对传输的数据进行加密,中间人攻击,sniffer等无法造成篡改.防止DNS欺骗和IP欺骗.
OpenSSH
- SSH协议的免费开源实现,可以通过OpenSSH的方式远程登iPhone.
SSH是通过TCP协议协议通信,要保证mac和iPhone在同一个局域网下
在mac的终端输入 ssh 账户名@主机地址
ssh root@192.168.50.222
The authenticity of host '192.168.50.222 (192.168.50.222)' can't be established.
RSA key fingerprint is SHA256:mK4IZVBBKdt/D2zd6250WBS58RNF7M8IWeUWTl+3VtY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.50.222' (RSA) to the list of known hosts.
root@192.168.50.222's password:
密码默认 alpine
iOS下有2个常用账户:
- root:最高权限 $Home
/var/root
- mobile:普通权限,不能操作系统文件 $Home
/var/mobile
退出帐号 终端输入 exit
更改密码 passwd
在cydia上安装OpenSSH的时候会先安装OpenSSL,也就是说OpenSSH是依赖于OpenSSL的 .
- SSL 也是一种传输加密协议.
- OpenSSL 则是其开源实现.
SSH 有2种版本
- SSH1
- SSH2
主机与服务端需要保持一致才能相互通信.可以通过查看Protocol
字段来得知是第几种版本.
$ cd /etc/ssh
$ open -a xcode ssh_config
SSH通信过程
- 建立安全连接
- 客户端认证
- 数据传输
建立安全连接
在建立安全连接的过程中,服务器会提供自己的身份证明.
如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器.
在建立安全连接的过程中,如果服务器的身份信息发生变更.(eg.不同主机同一个IP),在确定要连接的情况下删掉之前保存的公钥信息即可.
ssh-keygen -R 服务器IP地址
vim ~/.ssh/known_hosts
客户端认证
SSH-2提供2种客户端认证方式
- 基于密码的客户端认证
- 基于密钥的客户端认证 (优先且更安全)
基于密钥的认证:
ssh-keygen
一路敲回车键(Enter)即可
OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
生成的公钥:~/.ssh/id_rsa.pub
生成的私钥:~/.ssh/id_rsa
复制到服务器中:
$ ssh-copy-id -i id_rsa.pub root@192.168.50.222
or手动复制scp
命令.
复制客户端的公钥到服务器某路径
scp ~/.ssh/id_rsa.pub root@服务器主机地址:~
- scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上
上面的命令行将客户端的~/.ssh/id_rsa.pub
拷贝到了服务器的~地址
SSH登录服务器 - ssh root@服务器主机地址
- 需要输入root用户的登录密码
在服务器创建.ssh文件夹
mkdir .ssh
追加公钥内容到授权文件尾部
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
删除公钥
rm ~/id_rsa.pub
备注: iPhone 默认22端口进行ssh通信.
USB进行SSH登录
下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py)
usbmuxd 下载地址
将iPhone的22端口(SSH端口)映射到Mac本地的10010端口
cd ~/Documents/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10010
加上-t参数是为了能够同时支持多个SSH连接
注意:要想保持端口映射状态,不能终止此命令行(如果要执行其他终端命令行,请新开一个终端界面)不一定非要10010端口,只要不是保留端口就行.
$ ssh root@localhost -p 10010
拷贝
scp -P 10010 ~/Desktop/1.txt root@localhost:~/test
即可连接.
Shell脚本
为了避免每次开发都要输入命令,将其封装成2个脚本
vim usb.sh回车
按i 输入
python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:10010
按ESC 然后:wq
保存退出.
vim usblogin.sh回车
按i 输入
ssh root@localhost -p 10010
按ESC 然后:wq
保存退出.