目前 mac 上免输入密登录远程服务器主要是2种方案
- 方案一: ssh-keygen 生成公私钥,把公钥拷贝到要登录的服务器种,ssh 命令直接免密登录
- 方案二: iTerm2 -> profile 自定义登录脚本进行登录
此文主要说明的是自定义脚本进行免密登录
1.依赖条件
- brew
mac 下的包管理工具,安装brew参考(源推荐使用清华): https://gitee.com/cunkai/HomebrewCN
- expect
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
# 安装 expect
brew install expect
2. 自定义脚本
- 在/usr/local/bin 目录下创建 login.sh 文件,内容如下
#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
"*yes/no*?"
{send "yes\n";exp_continue}
"*assword:*"
{send "[lindex $argv 3]\n"}
}
interact
- 脚本授权,可执行权限
sudo chmod +x login.sh
- 测试
login.sh 参数1 参数2 参数3 参数4
login.sh 端口 用户名 ip地址或者域名 '密码'
# 找台远程服务器测试下:
login.sh 22 root 110.110.110.110 '123456'
3.iTerm2 配置远程服务器保存账号密码
mac 最好用的终端工具
- 打开 profile 编辑页面,把登录脚本拷贝到指定输入框,如图:
login.sh 22 root 110.110.110.110 '123456'
-
最后在 profile 中直接到打开测试即可,远程连接成功了