Mac中多ssh连接管理脚本

在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~]# 
0%