Windows 上有 xshell 工具可以做收藏,但是 Mac 配置后可能更加方便和强大,网上有很多这方面的文章,这里自己也记录一下,方便以后查阅。下面介绍 2 种方式:
- sshpass
- expect
一、使用 sshpass
(1)安装
第一次需要安装 sshpass
执行脚本,这里使用 brew
进行安装。
brew install http://git.io/sshpass.rb
(2)验证
在终端输入 sshpass
如下输出帮助说明即安装正确:
$ sshpass
(3)查看安装路径
where sshpass
# 或者
which sshpass
# 我本地输出如下
/usr/local/bin/sshpass
通过上面的步骤后,下面进行 iTerm2
的相关配置。
(1)基本配置
打开 iTerm2
的设置,然后点击 Profiles
,这里的 Profiles
就是我们自己收藏的一些配置,我这里以自己的腾讯云服务器 SSH 登录为例子。配置列表如下:
- 其中最重要的就是
Command
表示启动Profiles
时候自动执行的命令,这里我们使用sshpass
来登录; - Name 表示配置的昵称,自己配置即可;
- Tags 表示对
Profiles
进行分组,我这里设置为云服务器
; - Badge 表示在 SSH 登录后,在终端的右上角显示登录的服务器ID,这里我设置为
QQ
,主要用于标记(先要打开 Profile Name),可看下图。



基本配置就是这些,下面看一下 sshpass
的用法:
/usr/local/bin/sshpass -p <password> ssh -p<port> <username>@<ip>
这里 -p <password>
的方式能够使用 -f
读取配置文件的方式,可以将密码放在一个文件中,这里我建立一个:
touch ~/ssh_pass/qq_pass && echo "mypassword" > qq_pass
然后上面的 Command
配置就变成了:
/usr/local/bin/sshpass -f ~/ssh_pass/qq_pass ssh -p<port> <username>@<ip>
port 一般默认 22。这样就配置完成了,启动的时候就很方便了,直接点击 Profiles
即可登录。

其中 云服务器
就是分组,QQ-yun
就是具体的 Profile
,点击即可登录。
也能够点击 Open Profiles
来查看配置列表,然后双击也能够登录,这能自己尝试。
这里要注意的是,第一次登录需要去授权 ssh,可以手动在终端登录一次,如果出现授权问题可以删除
known_hosts
,然后重新授权,一般存在于:~/.ssh/known_hosts
二、使用 shell 脚本
上面是使用了别人写的东西,下面介绍一下简单的脚本来实现。这里不会只是使用 shell 执行的方式,会采用 expect
,这个工具很实用,能够做终端的自动打包、备份、重启等功能。
(1)安装
brew install expect
(2)查看
# /usr/bin/expect
which expect
(3)实现一个 SSH 登录云服务器,命名为 qq.sh
#!/usr/bin/expect -f
# 设置超时时间,可以设置 -1 永不超时
set timeout 3
# 基本的服务器信息
set password <server_password>
set port 22
set user <your_username>
set ip <your_ip>
# 执行的命令
spawn ssh -p $port $user@$ip
# 交互式输出
expect "$user$ip's password:"
# 模拟输入密码,并且回车登录,这里有一定延迟,也可以手动自己回车
send "$password\r"
# 表示操作完成,用户继续可以交互操作
interact
(4)设置当前 qq.sh
为可执行文件
sudo chmod a+x qq.sh
(5)在终端输入 ./qq.sh
即可自动登录
注:如果提示 spawn 不存在,那么需要理解下
sh
的方式。如果是使用sh qq.sh
的方式会让#!
第一行命令声明失效,所以要采用可执行脚本的方式./qq.sh
。
(6)结合 iTerm2
来使用 shell
这个可以结合交互式参数来输入,也可以配置好 shell 过后直接在 Profiles
中的 Command
直接引入该 shell。
其实也有最方便的形式,就是写一个 shell 直接帮忙跑 ssh 即可,不过结合 iTerm2
应该是最方便管理的方式,还有分组、标记等功能。