在Windows中对于ssh使用比较好用的工具有xshell等,但在mac下直接使用终端就比较好用,但是每次输入账号密码,如果还有多个的话就比较麻烦。可以写一个脚本来管理。
先上脚本:
#!/bin/bash
set sshname=
set sshhost=
menu() {
while read line
do
if [ "${line:0:1}" == "#" ];then
continue
fi
if [ "${line}z" == "z" ];then
continue
fi
if [ "${line:0:2}" == "--" ];then
echo ''
continue
fi
# # 序号 | 显示名称 | IP | 端口 | 用户名 | 密码 | key
id=`echo $line|awk -F "|" '{print $1}'`
name=`echo $line|awk -F "|" '{print $2}'`
echo $id$'\t'$name
done < /Users/zngw/.ssh/ssh.conf
}
link() {
while read line
do
if [ "${line:0:1}" == "#" ];then
continue
fi
if [ "${line}z" == "z" ];then
continue
fi
if [ "${line:0:2}" == "--" ];then
continue
fi
# # 序号 | 显示名称 | IP | 端口 | 用户名 | key
id=`echo $line|awk -F "|" '{print $1}'`
name=`echo $line|awk -F "|" '{print $2}'`
host=`echo $line|awk -F "|" '{print $3}'`
port=`echo $line|awk -F "|" '{print $4}'`
username=`echo $line|awk -F "|" '{print $5}'`
key=`echo $line|awk -F "|" '{print $6}'`
if [ "$id" -eq "$1" ];then
sshname=$name
sshhost=`echo $username@$host -p $port -i $key`
break
fi
done < /Users/zngw/.ssh/ssh.conf
}
while true; do
menu
read -p '输入进入的服务器:' cmd
if [ "${cmd}" == "0" ];then
break
fi
sshhost=
link $cmd
if [ -z "${sshhost}" ];then
echo '选择的服务器不存在,请重新选择.'
else
echo 正在链接[$name]服务器...
ssh $sshhost
fi
done
这里有一个配置文件 /Users/zngw/.ssh/ssh.conf
,配置文件格式如:
# 序号 | 显示名称 | IP | 端口 | 用户名 | key
1| 过客 - s0 |192.168.31.55|22|root|~/.ssh/key/gk.pem
2| 过客 - s1 |192.168.31.55|22|root|~/.ssh/key/gk.pem
--
11| 过客 - 测试 |192.168.31.155|22|root|~/.ssh/key/gk.pem
- #: 号开头为注释,
- –:显示为换行
运行上面脚本显示配置的服务器,输入前面的序号就可以连接对应的服务器了。
1 过客 - s0
2 过客 - s1
11 过客 - 测试
输入进入的服务器: 1
正在链接[ 过客 - s0 ]服务器...
Warning: Permanently added the ECDSA host key for IP address '192.168.31.5' to the list of known hosts.
Last login: Tue Apr 26 11:56:32 2022 from 192.168.31.5
[root@gk~]#