SSH免密码登录越狱Iphone:公钥或expect脚本
使用公钥不一定好使(有的设备好使), 这个时候可以使用 expect 脚本补充一下
SSH公钥登录
这个之前已经介绍过了, 请移驾: SSH免密码登陆(公钥认证)
大致分2步:
创建秘钥/公钥
拷贝公钥到目标服务器
如果不好使, 可以先检查一下目标机器的目录权限: SSH免密码登陆(公钥认证)-目录权限设置
# 目标机器目录权限重置
$ chmod 750 $HOME
$ chmod 700 $HOME/.ssh
$ chmod 600 $HOME/.ssh/authorized_keys
Cydia
安装了 syslogd
之后查看 sshd 日志: tail -200 /var/log/syslog | grep sshd
放个大招: 一条命令搞定 (2018.10.04 补充)
# 1. 重置 $HOME 目录权限; 2. 删除 .ssh 目录后再重新创建; 3. 重新导入公钥;
$ ssh root@192.168.7.191 'chmod 750 $HOME && rm -rf .ssh && mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
Expect自动填充密码
这里重点介绍一下 expect
自动交互脚本, 常见的应该就是自动填充登录密码了吧
安装 expect
:
# 快捷安装
$ brew install expect
SSH自动填充密码登录脚本:iphone.expect
#!/usr/bin/expect
#author:xu3352@gmail.com
#desc: ssh iphone device with the same password
set PASSWD "alpine"
set IP_LAST [lindex $argv 0]
spawn ssh root@192.168.7.$IP_LAST
expect "*password:"
send "$PASSWD\r"
expect "*#"
interact
由于内网 ip 会变化, 但是 ip 的前3端是固定的, 所以直接写死, 最后一位用参数的方式传过去; 这个语法和 Base
脚本有些差别的
使用示例:(自动填充密码)
$ iphone.expect 124
spawn ssh root@192.168.7.124
root@192.168.7.124's password:
iPhone:~ root#
这样也不用每次输入密码了
其他
SSH
公钥的方式是最安全和高效的;expect
脚本是自动填充密码的, 但是密码是明文的, 不是很安全;- 此两种方式同样适用于其他
Linux
服务器
参考:
- SSH免密码登陆(公钥认证)
- Linux 101 Hacks - SSH免密码登录
- Passwordless SSH
- Expect Script SSH Example Tutorial
- Expect - 自动交互脚本
- Linux Expect 简介和使用实例
blog comments powered by Disqus