SSH简介
-
SSH: Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议。
使用SSH,可以把所有传输的数据进行加密,中间人攻击方式就不可能实现,能防止DNS欺骗和IP欺骗 -
OpenSSH是SSH协议的免费开源实现,可以通过OpenSSH的方式让mac远程登录到iPhone
-
SSH协议一共2个版本
SSH-1和SSH-2
现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信
查看SSH版本(查看配置文件的Protocol字段)
客户端:/etc/ssh/ssh_config
服务器端:/etc/ssh/sshd_config
SSH的通信过程分为3大主要阶段
- 建立安全连接
- 在建立安全连接的过程中,服务器会提供自己的身份证明
服务器会发送公钥等信息给客户端 (/etc/ssh/ssh_host_rsa_key.pub(公钥)/etc/ssh/ssh_host_rsa_key(私钥))
如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xx
Are you sure you want to continue connecting (yes/no)?
在建立安全连接的过程中,可能会遇到错误信息:提醒服务器身份信息发生了变更,连接会断开
如果确定要连接此服务器,就需要删除掉之前服务器的公钥信息
1.ssh-keygen -R 服务器ip地址
2.或者直接打开known_hosts文件删除服务器的公钥信息:vim ~/.ssh/known_hosts(vim部分操作指令:dd是删除单行,u是撤销操作)
2.客户端认证
- SSH的客户端认证方式
SSH-2提供了2种常用的客户端认证方式
1,基于密码的客户端认证:使用账号和密码即可认证
2,基于密钥的客户端认证:免密码认证,最安全的一种认证方式
客户端生成一对公钥私钥文件:(~/.ssh/id_rsa.pub,~/.ssh/id_rsa)
生成公钥私钥:ssh-keygen
将公钥内容追加到服务器的的授权文件尾部(~/.ssh/authorized_keys)
可以使用ssh-copy-id root@服务器ip 将客服端的公钥内容自动追加到服务器的授权文件尾部。
也可以手动操作:
2.1,复制客服端的公钥到服务器的某路径 scp ~/.ssh/id_rsa.pub root@服务器主机地址:~
scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上,上面的命令将客户端的~/.ssh/id_rsa.pub拷贝到服务器的~目录
2.2,SSH登录服务器 ssh root@服务器地址 需要输入root的登录密码
2.3,在服务器创建.ssh文件夹 mkdir .ssh
2.4,追加公钥内容到授权文件尾部 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
2.5,删除公钥 rm ~/id_rsa.pub
2.6,如果配置了免密码登录后,还是需要输入密码,需要在服务器设置文件权限
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证”
3,数据传输
-
端口就是设备对外提供服务的窗口,每个端口都有个端口号(范围是0~65535,共2^16个)
-
有些端口号是保留的,已经规定了用途,比如:21端口提供FTP服务
80端口提供HTTP服务
22端口提供SSH服务(可以查看/etc/ssh/sshd_config的Port字段)
iphone默认是使用22端口进行SSH通信,采用的TCP协议 -
默认情况下,由于SSH走的是TCP协议,mac是通过网络连接的方式SSH登录到iphone,要求iPhone连接wifi
为了加快传输速度,也可以通过USB连接的方式镜像SSH登录
mac上有个服务程序usbmuxd(它会开机自动启动/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd),可以将mac的数据通过USB传输到iphone
usbmuxd的使用
- 下载地址 [cgit.sukimashita.com/usbmuxd.git…
- 端口映射
将iPhone的22端口(SSH端口)映射到Mac本地的10010端口
python-client目录下 执行python tcprelay.py -t 22:10010 端口映射
-t参数是为了能够同时支持多个ssh连接
要想保持端口映射状态,不能终止此命令行
不一定要10010端口,只要不是保留端口就行
端口映射完毕后,以后如果想跟iphone的22端口通信,直接跟mac本地的10010端口通信就可以了。
- 建立连接
新开一个终端界面,SSH登录到mac本地的10010端口(以下下方式2选1)
ssh root@localhost -p 10010
ssh root@127.0.0.1 -p 10010
localhost是一个域名,指向的ip地址是127.0.0.1,本机的虚拟网卡的IP地址
usbm会将mac本地10010端口的TCP协议数据,通过USB连接转发到iphone的22端口
远程拷贝文件也可以直接跟mac本地的10010端口通信
scp -P 10010 ~/Desktop/1.txt root@localhost:~
将客户端的~/Desktop/1.txt拷贝到服务器的~目录
mac远程登录到iPhone
- 首先在iPhone上安装openssh deb
使用命令:ssh root@192.168.x.x(这里的服务器是手机)
SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个wifi
可能报错:ssh:connect to host port 22:Operation timed out
在mac上ping不通手机ip地址 原因可能是无线路由设置了ap隔离。
初始密码为alpine
登录成功后就可以使用终端命令行操作iphone
退出命令exit
- ios下有两个常用账户root,mobile.
root是最高权限账户
echo $HOME 打印home文件夹
登录root、mobile账户后通过passwd,passwd mobile修改登录密码
SSL
-
SSL: Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密。
-
Open SSL SSL的开源实现 绝大部门HTTPS请求等价于:HTTP+OpenSSL
-
OpenSSH的加密就是通过OpenSSL完成的