Mac与iPhone的SSH通信

SSH的通信过程

SSH的通信过程分为3大主要阶段(Mac为客户端,iPhone为服务端):

1、建立安全连接

在建立安全连接过程中,服务器会提供自己的身份证明(/etc/ssh/ssh_host_rsa_key.pub中的公钥等信息发送给客户端~/.ssh/known_hosts)。如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器。

在建立安全连接过程中,可能会遇到以下错误信息:

报错信息

提醒服务器的身份信息发生了变更,这可能是中间人的攻击,但也可能只是服务器的host key发生了变化。此时可以通过变更客户端的~/.ssh/known_hosts文件,将原先服务端信息删除。

2、客户端认证

SSH-2提供2种常用的客户端认证方式。

1)基于密码的客户端认证:使用账号和密码即可认证。

2)基于秘钥的客户端认证:免密码认证。

SSH-2默认优先尝试“秘钥认证”,如果认证失败才尝试“密码认证”。设置“秘钥认证”的步骤如下:

首先使用命令在客户端生成一对公钥/私钥:ssh-keygen -t rsa -C "[email protected]"。

生成一对公钥/私钥

然后客户端将公钥内容(~/.ssh/id_rsa.pub)追加到服务端授权文件尾部(~/.ssh/authorized_keys):ssh-copy-id [email protected],客户端使用私钥(~/.ssh/id_rsa)进行登录认证。

3、数据传输

使用ssh-copy-id可以将客户端的公钥内容自动追加到服务器的授权文件尾部,也可以手动操作,具体步骤如下:

复制客户端的公钥到服务器某路径:scp ~/.ssh/id_rsa.pub root@服务器主机地址:~。

scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另一台主机上。

端口

端口就是设备对外提供服务的窗口,每个窗口都有个端口号,0~65535,共2^16个。有些端口号是保留的,已经规定了用途,如:21端口提供FTP服务,80端口提供HTTP服务,22端口提供SSH服务(/etc/ssh/sshd_config的Port字段)。

iPhone默认使用22端口进行SSH通信,采取TCP协议。

通过USB进行SSH登录

默认情况下,由于SSH走TCP协议,Mac是通过网络连接的方式SSH登录到iPhone,要求iPhone与Mac连接同一个WiFi。为了加快传输速度,也可以通过USB连接方式进行SSH登录。

Mac上有个服务程序usbmuxd(位于/System/Library/PrivateFrameworks/MobileDevice.framework/Resources,开机自动启动),可以将Mac的数据通过USB传输到iPhone。

SSH登录到自己的10010端口,使用usbmuxd通过USB连接到iPhone的22端口。usbmuxd的使用方法如下:

1)下载usbmuxd工具包。

(https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz)

2)将iPhone的22端口(SSH端口)映射到Mac本地的10010端口。

python2 tcprelay.py -t 22:10010

3)端口映射完毕,如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了。ssh root@localhost -p 10010

你可能感兴趣的:(Mac与iPhone的SSH通信)