简介
- SSH
SSH是一种网络协议,用于计算机之间的加密登录。(具体过程很简单,点这里?)- 中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”),通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
- 预防中间人攻击的最有效方法就是验证公钥是不是来自服务器,如果是公开的SSH服务器,一般会将公钥的哈希值公布在官网。
- OpenSSH
OpenSSH是提供SSH登录服务的软件。
使用OpenSSH连接(登录)手机
- $ ssh 用户名@用户服务器地址
- 最高权限用户:$ HOME:/var/root
$ ssh root@用户服务器地址 复制代码
- mobile权限用户:$ HOME:/var/mobile
当远程主机的公钥被接受以后,它会被保存在$~/.ssh/known_hosts文件中。当文件中保存的IP端口所对应的公钥,和服务端的公钥不匹配时,会出现中间人攻击警告,需要删除对饮的IP地址和端口记录。$ ssh mobile@用户服务器地址 复制代码
删除服务器获取的公钥
- $ ssh-keygen -R 服务器IP地址
修改OpenSSH登录密码
- 登录状态下
$ passwd
复制代码
SSH公钥登录
除了可以密码登录,也可以免密登录
公钥登录的原理:
- 客户端将公钥发给服务端
- 服务端生成随机字符串给客户端
- 客户端通过私钥加密随机字符串给服务端
- 服务端通过公钥解密字符串验证通过
这种方法需要用户自己提供公钥,如果没有公钥,可以使用ssh-keygen生成,生成步骤如下:
$ ssh-keygen
使用ssh-keygen命令在$~/.ssh目录下生成一对秘钥:
id_rsa(私钥)
id_rsa.pub(公钥)
$ ssh-copy-id
使用ssh-copy-id命令将生成的公钥上传到服务端
复制代码
如果出现错误,仍需输入密码登录,使用以下命令打印debug信息排查
$ ssh -vvv root@服务器ip
复制代码
注意:要确保设备中的$~/.ssh文件和$~/.ssh/authorized_keys 文件的组权限和其他用户权限中没有有写(w)权限。因为系统认为这是不安全的,会导致授权失败。可通过如下命令纠正:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
复制代码
通过USB登录
SSH协议的默认端口为22
将本地端口12345映射到服务端的TCP端口22,这样就可以通过本地的12345端口建立连接了。
- 使用python脚本
1. 通过tcprelay.py将12345
$ python tcprelay.py -t 22:12345
2. 通过本机IP,12345端口,建立连接
$ ssh root@localhost -p 12345
复制代码
如果觉得输入命令比较麻烦,可以使用shell脚本
- 使用libimobiledevice
1. 通过如下命令安装libimobiledevice
$ brew install libimobiledevice
2. 使用libimobiledevice提供的工具iproxy把本地的2222端口映射到设备的TCP端口22.
$ iproxy 2222 22
3. 通过本机IP,12345端口,建立连接
$ ssh root@localhost -p 2222
复制代码
如果觉得命令行比较麻烦,可以将端口转换命令写到开机启动项中。
1. 创建文件 ~/Library/LaunchAgents/com.usbmux.iproxy.plist
2. 写入内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.usbmux.iproxy</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/iproxy</string>
<string>2222</string>
<string>22</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
3. 运行命令
$ launchctl load ~/Library/LaunchAgents/com.usbmux.iproxy.plist
4. 打开$ HOOM/.ssh/config文件(没有就创建),写入以下内容
Host 5s #自定义的设备名
Hostname localhost #通过USB的端口映射,写入localhost
User root #以root用户登录
Port 2222 #指定端口号为映射端口号2222
5. 输入ssh 5s
复制代码
文件拷贝
拷贝文件123.txt
- 通过Wi-Fi连接拷贝 IP地址:192.168.2.4
scp 123.txt root@192.168.2.4:~/
复制代码
- 通过USB连接拷贝
注意大小写。。。
scp -P 12345 123.txt root@localhost:~/
复制代码