电脑通过ssh连接手机
ssh [email protected]
192.168.1.35
为手机的ip地址,root为用户级别,root为最高权限,还有mobile,连接mobile用户,可以使用下面的指令,原始密码为alpine, ssh root@服务器主机地址
ssh [email protected]
退出连接
exit
以上可以通过iPhone:~ root
#
和iPhone:~ mobile$
中,#
和$
可以区分开是最高权限用户,还是普通用户,“#
”一般代表最高用户,“$
”一般代表不是最高用户
修改root权限的密码
//修改root下的密码
passwd
修改mobile用户的密码
//修改mobile下的密码
passwd mobile
通过Cydia安装的安装包是deb
格式的(结合软件包管理工具apt
),通过pp助手或其他的安装包是ipa
格式的
- 1.如果通过Cydia源安装deb失败,可以从网上下载deb格式的安装包,
- 2.然后将deb安装包放到/var/root/Media/Cydia/AutoInstall
- 3.重启手机,Cydia会自动安装deb
如果自己手机上没有这个AutoInstall文件夹,可以自己创建一个,cd到/var/root/Media/Cydia路径下,使用
mkdir
创建文件夹,可以用rm
删除文件夹
使用rm既可以删除文件又可以删除文件夹
删除文件夹(无论文件夹是否为空),使用 -rf 命令即可。
即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
删除文件夹实例:
rm -rf AutoInstall
查看当前路径的方法
pwd
echo $HOME
SSH
ssh为Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录
提供安全保障的协议
OpenSSH
- 是ssh协议的免费开源实现
- 可以通过OpenSSH的方式让Mac远程登录到iPhone
SSL
- SSL为Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密
Open SSL
- SSL的免费开源实现
- 绝大部分HTTPS请求等价于:HTTP + OpenSSL
- OpenSSH的加密就是通过OpenSSL完成的
SSH的版本
- SSH协议一共2个版本
SSH-1
SSH-2
现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信
查看SSH版本(查看配置文件的Protocol字段)
客户端:/etc/ssh/ssh_config
服务端:/etc/ssh/sshd_config
查看config
cat ssh_config
SSH的通信过程可以分为3大主要阶段
- 建立安全连接
- 在建立安全连接过程中,服务器会提供自己的身份证明,服务器会把公钥发送到客户端,客户端把服务端的公钥信息,存储在
~/.ssh/known_hosts
中
服务器提供身份证明
查看客户端存储的服务端的公钥信息
cat known_hosts
gitee.com,218.11.0.86 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMuEoYdx6to5oxR60IWj8uoe1aI0X1fKOHWOtLqTg1tsLT1iFwXV5JmFjU46EzeMBV/6EmI1uaRI6HiEPtPtJHE=
192.168.1.9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtWSE5z6M/rWldIo6XaN4jdjaO380Mh5cN4G0D8l8tjWb+SFGxv4EoZm3t+MaI19KbIXT4np4sE/nBhH35Ar7VRv8vta3ZXgBcecAhj+SNhuG66anzkDhPQbyuxI3xX9E/MAtrc1VGxeqFcUyJp/nBkSeqIIv9VnwET2dbvR7xmvRn9GcKL8E1nR6yzPb5mUCcae5QjMnFDYwxrwhiXiLH591V3zZJdxM4hTBh1z8f1tysJMet3VVsGEWFivAg4JKQaa8i8bD0NcoYzM2KyTlVcesltUbjY4gr9CUDwBWtkdZGA0qDg37beNtqC29IKhqwtbKWqA7OAEQ0mx01nT09
192.168.1.212 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtWSE5z6M/rWldIo6XaN4jdjaO380Mh5cN4G0D8l8tjWb+SFGxv4EoZm3t+MaI19KbIXT4np4sE/nBhH35Ar7VRv8vta3ZXgBcecAhj+SNhuG66anzkDhPQbyuxI3xX9E/MAtrc1VGxeqFcUyJp/nBkSeqIIv9VnwET2dbvR7xmvRn9GcKL8E1nR6yzPb5mUCcae5QjMnFDYwxrwhiXiLH591V3zZJdxM4hTBh1z8f1tysJMet3VVsGEWFivAg4JKQaa8i8bD0NcoYzM2KyTlVcesltUbjY4gr9CUDwBWtkdZGA0qDg37beNtqC29IKhqwtbKWqA7OAEQ0mx01nT09
192.168.1.35 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtWSE5z6M/rWldIo6XaN4jdjaO380Mh5cN4G0D8l8tjWb+SFGxv4EoZm3t+MaI19KbIXT4np4sE/nBhH35Ar7VRv8vta3ZXgBcecAhj+SNhuG66anzkDhPQbyuxI3xX9E/MAtrc1VGxeqFcUyJp/nBkSeqIIv9VnwET2dbvR7xmvRn9GcKL8E1nR6yzPb5mUCcae5QjMnFDYwxrwhiXiLH591V3zZJdxM4hTBh1z8f1tysJMet3VVsGEWFivAg4JKQaa8i8bD0NcoYzM2KyTlVcesltUbjY4gr9CUDwBWtkdZGA0qDg37beNtqC29IKhqwtbKWqA7OAEQ0mx01nT09
查看服务端的公钥信息,1.先连接到手机,2. cd 到/etc/ssh路径下
cat ssh_host_rsa_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtWSE5z6M/rWldIo6XaN4jdjaO380Mh5cN4G0D8l8tjWb+SFGxv4EoZm3t+MaI19KbIXT4np4sE/nBhH35Ar7VRv8vta3ZXgBcecAhj+SNhuG66anzkDhPQbyuxI3xX9E/MAtrc1VGxeqFcUyJp/nBkSeqIIv9VnwET2dbvR7xmvRn9GcKL8E1nR6yzPb5mUCcae5QjMnFDYwxrwhiXiLH591V3zZJdxM4hTBh1z8f1tysJMet3VVsGEWFivAg4JKQaa8i8bD0NcoYzM2KyTlVcesltUbjY4gr9CUDwBWtkdZGA0qDg37beNtqC29IKhqwtbKWqA7OAEQ0mx01nT09
可以看到上面两个字符串是一样的,这样就证明客户端,连接服务器的时候,服务器会把公钥发送给客户端,客户端会把公钥存储在"~/.ssh/known_hosts"路径
-
如果客户端并无服务端的公钥信息,就会询问是否连接这个服务器
~/.ssh ssh [email protected]
The authenticity of host '192.168.1.35 (192.168.1.35)' can't be established.
RSA key fingerprint is SHA256:MUn9itUDKqO4oMmXp0neLGfXIL7XBAdXBac8MJ3Tn90.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
-
在建立安全连接过程中,可能会遇到提醒服务器的身份发生了改变
1.可以使用命令删除客户端存储的之前服务端的公钥信息
ssh-keygen -R 192.168.1.35
ssh-keygen -R 服务器IP地址,上面的192.168.1.35
为服务器的地址
2.也可以使用vim直接打开,并删除公钥信息,然后保存退出vim
vim ~/.ssh/known_hosts
3.删除完成后,再次登录时候,就会出现授权的提示,并把服务器的公钥信息保存到客户端的~/.ssh/known_hosts
中
-SSH-2提供了2种常用的客户端认证方式
1.基于密码的客户端认证:使用账号和密码即可认证
2.基于秘钥的客户端认证:免密码认证,最安全的一种认证方式
SSH-2默认会优先尝试“秘钥认证”,如果认证失败,才会尝试密码认证
- 客户端生成公钥和私钥一对文件
ssh-keygen
一路敲回车键(Enter)即可
OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
生成的公钥:~/.ssh/id_rsa.pub
生成的私钥:~/.ssh/id_rsa
- 把客户端的公钥内容追加到服务端的授权文件(
~/.ssh/authorized_keys
)尾部,使用命令ssh-copy-id root@服务器主机地址
,root就是用户名字
ssh-copy-id [email protected]
ssh-copy-id
会将客户端~/.ssh/id_rsa.pub
的内容自动追加到服务器的~/.ssh/authorized_keys
尾部
注意:由于是在~文件夹下操作,所以上述操作仅仅是解决了root用户的登录问题(不会影响mobile用户)
可以查看服务端的授权文件
cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7BbLYAN0MshadL+lDtu9/A7zrhVMfN90XlAgjVEbUYC0US+SOMO7rEUT5Y01ClaGnA+sIGjE0J4Nbes8dH69OpP8H20bw1zaPAKnGzzVxMuK38uCfdyy3JtDXK1MtIiNITriFsuV8gPn28XyjBs/qyhSmkjufyLpwkIeXHuj66xd0tF1VVBoqkIWi9+SAwy/lE/7QL8B5DnuyXa1TUEZR4RaHkNPPwp1KMIb89cDAsiOJ2BIaMFrc63cXklbdZPj0do/yjQBzrt4/yX9oa6xfGMJFqmEMn5+hXi8Y9bgwntveuETWfOvAw2PHGCEtKiSotAhmJgoq6FX4H1I++Da/ [email protected]
查看下客户端的公钥和服务端的授权文件中的文件是否一样
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7BbLYAN0MshadL+lDtu9/A7zrhVMfN90XlAgjVEbUYC0US+SOMO7rEUT5Y01ClaGnA+sIGjE0J4Nbes8dH69OpP8H20bw1zaPAKnGzzVxMuK38uCfdyy3JtDXK1MtIiNITriFsuV8gPn28XyjBs/qyhSmkjufyLpwkIeXHuj66xd0tF1VVBoqkIWi9+SAwy/lE/7QL8B5DnuyXa1TUEZR4RaHkNPPwp1KMIb89cDAsiOJ2BIaMFrc63cXklbdZPj0do/yjQBzrt4/yX9oa6xfGMJFqmEMn5+hXi8Y9bgwntveuETWfOvAw2PHGCEtKiSotAhmJgoq6FX4H1I++Da/ [email protected]
- 还可以使用另外一种方法,把客户端的公钥文件,追加到服务端的授权文件后
1.先删除服务器上的授权文件;
cd ~/.ssh
rm authorized_keys
2.拷贝客户端的公钥到服务器上的~/.ssh
路径里面
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh
注意 在服务器后面添加路径的时候必须得用个:
,才能添加路径
3.把客户端的公钥追加到服务器的authorized_keys
中
cat id_rsa.pub >> authorized_keys
相当于把id_rsa.pub
文件的内容追加到authorized_keys
的尾部,如果没有authorized_keys
这个文件,就会新建一个这个文件
***如果都配置了,还是不能秘钥登录,可能是文件权限的问题,需要在服务器端设置文件权限
**
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
iPhone默认是使用22端口进行SSH通信,采用的是TCP协议
-有两种方法可以登录,不使用wifi的情况下,使用usb数据线连接
1.下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py)
下载地址
2.将iPhone的22端口(SSH端口)映射到Mac本地的10010端口
cd Documents/usbmuxd
执行端口的映射
python tcprelay.py -t 22:10010
加上-t参数是为了能够同时支持多个SSH连接
注意如果出现下面这个错误提示
-. 先查看hosts的文件,看看里面的文件有没有
127.0.0.1 hostname
,没有加入主机名 127.0.0.1 hostname
vim /etc/hosts
我的问题是使用了switchHosts
这个软件,进行了修改,修改过了就可以了
3.使用usb连接手机
ssh root@localhost -p 10010
localhost
是一个域名,指向的IP地址是127.0.0.1,本机虚拟网卡的IP地址
如果出现kex_exchange_identification: read: Connection reset by peer,是因为数据线没有连接好,拔下来重新连接下就可以了
4.选项映射错误的时候,也可以使用这个方法,进行端口映射
-.1先安装usbmuxd
brew install usbmuxd
-.2iproxy
这个工具会将设置上的端口号,映射到电脑的某一个端口上
iproxy 10010 22
以上的命令就是把设备的22端口(SSH端口)映射到电脑的10010端口上,那么想和设备22端口通信,直接和本地的10010端口通信就可以了
-.3连接设备
ssh -p 10010 [email protected]
-.第二种方法连接设备
-.1.先安装usbmuxd
brew install usbmuxd
-.2.iproxy
这个工具会将设置上的端口号,映射到电脑的某一个端口上
iproxy 10010 22
出现waiting for connection,这个表示映射已经成功了
-.3.连接设备,不要关闭这个窗口,(要重新打开一个窗口,使用command+T
创建一个新的窗口,要是关闭了,这个端口映射就断开了)
ssh -p 10010 [email protected]
远程拷贝文件也可以直接跟Mac本地的10010端口通信
cp -P 10010 ~/Desktop/123.txt root@localhost:~
将Mac上的/Desktop/123.txt文件,拷贝到iPhone上的路径,(~
表示用户路径)
注意:scp的端口号参数是大写的-P
使用脚本文件进行登录
我们可以把将经常执行的一系列终端命令行放到sh脚本文件中(shell),然后执行脚本文件
-.可以通sh,bash,source命令来执行sh脚本文件
sh、bash当前shell环境会启动一个子线程来执行脚本文件,执行完成后返回到父进程的shell环境
source在当前的shell环境下执行脚本文件
创建脚本文件
在用户目录下,创建脚本
vim usb.sh
里面添加"python ~/Documents/usbmuxd/tcprelay.py -t 22:10010",设置端口的映射
创建脚本
vim login.sh
里吗添加“ssh -p 10010 root@localhost”,连接手机的命令
以上两个脚本创建完成,可以快速创建端口映射和连接手机,分别执行这连个脚本,(注意执行完成第一个脚本,再开一个新窗口,执行第二个脚本)
sh usb.sh
sh login.sh
手机终端不能输入中文的问题
-.默认情况下,ios终端不支持中文输入和显示
解决方案:先进一个~/.inputrc
文件,文件内容是
不将中文字符转化为转义序列
set convert-meta off
允许向终端输出中文
set output-meta on
允许向终端输入中文
set meta-flag on
set input-meta on
vim .inputrc
注意vim .inputrc中的.
然后重启终端,然后就可以在终端输入中文了
-.如果想在终端编译文件内容,可以通过Cydia安装一个vim,这样就可以使用vim命令来创建文件了