声明:本篇文章已授权微信公众号 YYGeeker 独家发布。
OpenSSH简介
OpenSSH
(OpenBSD Secure Shell)是 SSH 协议的免费开源实现。SSH协议簇可以用来进行远程控制, 或在计算机之间传送文件。
越狱设备安装 OpenSSH
Cydia
中添加雷锋源,然后搜索OpenSSH
,如图,安装即可
Mac电脑连接越狱设备
通过WIFI连接(需要越狱设备与电脑在同一局域网)
查看手机的IP地址
$ssh root@172.25.237.223
密码默认为
alpine
通过USB连接(比WiFi更快更稳定)
- 安装usbmuxd
brew install usbmuxd
- 使用
iproxy命令
将电脑的2222端口
转发到手机的22端口
$iproxy 2222 22
- 然后
command + t
另起终端,执行ssh命令
$ssh –p 2222 root@localhost
设置免密登录
$ssh-keygen
$ssh-copy-id -p 2222 root@localhost
原理
1、客户端生成RSA公钥和私钥
ssh-keygen
调用后,~/.shh
目录中会生成私钥id_rsa
和公钥id_rsa.pub
2、客户端将自己的公钥存放到服务器
ssh-copy-id -p 2222 root@localhost
调用后,客户端的公钥id_rsa.pub
会拷贝到服务器的~/.ssh/authorized_keys
里面
3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端
4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。
填坑记
解决REMOTE HOST IDENTIFICATION HAS CHANGED!
场景如下
$ssh -p 2222 root@localhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Please contact your system administrator.
Add correct host key in /Users/CHF/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/CHF/.ssh/known_hosts:2
RSA host key for [localhost]:2222 has changed and you have requested strict checking.
Host key verification failed.
这里有一个关键词man-in-the-middle attack
,先来看看wiki的解释:
中间人攻击(英语:Man-in-the-middle attack,缩写:MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。
使用ssh连接一个新host的时候,会有下面的询问:
RSA key fingerprint is SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Are you sure you want to continue connecting (yes/no)?
输入yes,ssh就会把这个host对应的公钥,保存在~/.ssh/known_hosts
里面。
后面每一次的连接,都会校验host对应的公钥,与~/.ssh/known_hosts
里面的是否匹配,以阻止中间人攻击。
连接越狱设备出现这种问题,是因为我们使用usb连接,host写死为localhost
,不同手机的公钥当然不一样。
- 解决办法
~/.ssh/known_hosts
中删除localhost
对应的记录
[localhost]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD5UwQeAoQX
解决无法免密登录的问题
使用 -v
打印debug信息
$ssh -v -p 2222 root@localhost
看到如下日志,Offering public key: RSA
服务器没有返回,所以定位为越狱机问题
debug1: Offering public key: RSA SHA256:SUmzZ/w6OjWX1H3i1hqWiXlDgUQjUN7YmomMa7fNquk /Users/CHF/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
查看越狱机日志
/etc/syslog.conf
这个是syslog服务的主要配置文件,根据定义的规则导向日志信息。
$cat /etc/syslog.conf
*.* /var/log/syslog
$cat /var/log/syslog | grep sshd
发现如下日志
sshd[10024]: Authentication refused: bad ownership or modes for directory /private/var/root
google搜索Authentication refused: bad ownership or modes for directory
得知改一下权限就可以解决
chmod 755 /private/var/root
其他
编辑config文件
$vi ~/.ssh/config
添加下面的代码
Host chenhuafengde5s
HostName localhost
User root
Port 2222
保存后,我们就可以使用ssh chenhuafengde5s
来连接了
删除SSH服务器对应的公钥
$ssh-keygen -R 服务器IP地址
修改ssh登录密码的命令
$passwd
然后输入2次新密码既可修改成功!