前提
- 需要在iPhone上安装OpenSSH(SSH的开源实现)
在Cydia中搜索OpenSSH并安装,这样iPhone上就可以开启SSH服务。SSH服务默认绑定端口号22。 - Mac和iPhone需要在同一局域网下,比如连接到同一个WIFI中。
使用步骤
Mac终端连接iPhone
命令: ssh 账户名@服务器主机IP
- 在iOS中,有2个常用的账户:root、mobile;
- 这里服务器为iPhone,IP通过系统设置->无线局域网->IP地址中查找;
- 苹果给iOS账号默认登录密码为:alpine;
-
清除某服务器ssh公钥信息,公钥信息存储在~/.ssh/known_hosts
清除命令:ssh-keygen -R [服务器主机IP]
修改初始密码
命令:passwd 用户名
然后输入两边新密码
SSL与OpenSSL&SSH与OpenSSH
SSL
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
OpenSSL
OpenSSL 是一个SSL密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。简单来说就是SSL的免费开源实现。
绝大部分HTTPS请求等价于:HTTP + OpenSSL。
SSH
SSH(Secure Shell 安全外壳协议),由 IETF 的网络小组(Network Working Group)所制定;SSH 是建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
SSH协议一共2个版本:SSH-1和SSH-2
现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信。
查看SSH版本(查看配置文件的Protocol字段)
客户端:/etc/ssh/ssh_config
服务端:/etc/ssh/sshd_config
OpenSSH
OpenSSH是SSH协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
OpenSSH的加密就是通过OpenSSL完成的。
SSH通讯过程
SSH的通信过程可以分为3大主要阶段
1. 建立安全连接
-
在建立安全连接过程中,服务器会提供自己的身份证明。
-
如果客户端还没有保存服务器端的公钥信息,建立连接前会询问是否连接此服务。
-
如果服务器的身份信息发生了变更,在连接过程中会遇到以下错误:
如果确定要连接此服务器,需要删除掉之前的服务器的公钥再连接即可。
方式一:使用命令删除:ssh-keygen -R 服务器IP地址
方式二:直接打开~/.ssh/known_hosts找到服务器IP地址对应的公钥信息直接删除并保存即可。
2. 客户端认证
SSH2提供了2种常用的客户端认证方式
基于密码的客户端认证
连接时提示用户输入密码进行认证。-
基于密钥的客户端认证
免密码认证,是最安全的一种认证方式。
注意SSH2默认会优先尝试“密钥认证”,如果认证失败才会尝试密码认证。
认证流程如下:
具体流程如下:
- 在客户端生成一对相关联的密钥对(Key Pair):一个公钥(Public Key)和一个私钥(Private Key)
使用命令:ssh-keygen
一路敲回车键(Enter)即可
OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
生成的公钥:~/.ssh/id_rsa.pub
生成的私钥:~/.ssh/id_rsa - 把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部
方式一:直接使用ssh-copy-id完成
命令:
ssh-copy-id [-i identity_file] 用户名@服务器主机地址
选项:
-i:指定公钥文件
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。需要输入用户的登录密码。
实例:
ssh-copy-id root@192.168.10.80
不指定公钥文件默认会将客户端~/.ssh/id_rsa.pub的内容自动追加
到服务器~/.ssh/authorized_keys尾部。
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.80
将客户端指定的公钥文件自动最佳到服务器~/.ssh/authorized_keys尾部方式二:
先将客户端的公钥文件拷贝到服务器中,然后再将公钥内容追加到授权文件中。
1)复制客户端的公钥到服务器某路径
scp ~/.ssh/id_rsa.pub root@服务器主机地址:~
scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上。
上面的命令行将客户端的~/.ssh/id_rsa.pub公钥文件拷贝到服务器
~目录中。
2)SSH登录服务器
ssh root@服务器主机地址
需要输入root用户的登录密码
3)在服务器~目录下创建.ssh文件夹
mkdir .ssh
4)追加公钥内容到授权文件尾部
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
5)删除公钥
rm ~/id_rsa.pub方式三:直接通过iFunBox进行操作。
- 注意:如果配置了免密码登录后,还是需要输入密码,需要在服务器端设置文件权限。
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys