Mac 电脑下最新实用ssh免密码登陆脚本

description: 使用SecureCRT痛苦以后的崛起git

mac 系统上我一直少有发现一款好用的 ssh 工具, 免去我记住多个密码的烦恼.github

通过大量时间的寻找, 我发现了一款名为 SecureCRT 的工具, 能够在 mac 系统上使用, 的确能够免除我记住大量密码的烦恼, 可是使用的痛苦也随之而来.shell

  1. 不存在清理屏幕的快捷键 常常登陆服务器进行测试环境的日志查阅, 这个时候, 界面上停留的可能有进入多少级目录, 而后打了什么命令, 已经其余不少可有可无的东西在上面. 这个时候清理屏幕就显的很重要, 可是 CRT 不支持. 只能傻傻的经过工具栏上方的按钮去清除屏幕.
  2. vim 以后不能滚轮滑动 文字已经很能说明问题了, 我就很少赘述.
  3. 我本身的 Iterm2 上操做的很开心, 不能用他我就不开心 这一点尤其重要.

基于以上三个问题, 我决定翻出去年写的那个已经不能用的脚原本搞好他.vim

以前的脚本存在几个问题bash

  1. 不能展现出来列表 我目前存了多少个服务器, 我记不住, 也不能展现出来
  2. 好端端的坏了 进入服务器以后, 啥也不能干.

经过网上苦苦的搜索, 我找到一个朋友写的一个东西很是棒. fork 了他的项目, 改编了一下, 使其能更好的适用于个人电脑. 此处感谢 AlicFeng 的文章给个人帮助, 此处是github 地址.服务器

首先说说为何要重写ssh

  1. 电脑上下载的时候老是提示须要管理员的权限, 可是已经使用了, 不厌其烦
  2. 废了好多功夫弄到本地以后, 感受不是太会用. 这一点很尴尬.
  3. 简书评论区 2 楼回复的很好, 在此引用一下

    -s 登陆的时候,后面的编号并非 ini 文件中的 Index 项,而是取决于 shell 过滤出来的 ini 文件顺序工具

基于上面 3 点功能, 打算小小的改造一下.测试

首先解决重点解决第三个问题. AlicFeng 以前使用的是集合, 顺序得不到保证. 所以, 我在想, 是否是能够用 Map 类型来存储. 通过查阅资料, 发现 Map 数据类型和 bash 相关, mac 下的 bash 是 3.x, 可是 Map 数据类型必需要 4.x 以上. 因而乎, 须要升级个 bash.ui

方法一: 更换系统的 bash, 须要重启电脑

mac 升级 bash 以前须要关闭 SIP(System Integrity Protection). 网上有不少文章关于如何操做, 先简单介绍一下, 不清楚的能够去查阅资料. 首先重启电脑, 并按住 command+r 键, 进入恢复模式.

进入恢复模式的系统以后, 打开上方工具栏中"实用工具"下的"终端".

在终端中输入

csrutil disable
复制代码

成功以后, 重启电脑.

这个时候就能够升级 bash 了.

打开 iterm2, 输入命令

brew install bash
复制代码

升级成功以后输入以下命令

# 替换bash
sudo mv /bin/bash /bin/bash.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash
# 因为本mac版本下的sh并非直接连接bash,而是bash的一个文件拷贝。所以,还要替换默认的sh指向的命令为bash,以下:
sudo mv /bin/sh /bin/sh.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/sh
复制代码

这个时候能够经过命令来查看是否成功

bash --version
复制代码

安装以后, 就能够重启电脑, 把 SIP 给启动. 一样进入恢复模式下输入

csrutil enable
复制代码

而后重启电脑.

方法二: 直接下载新的 bash, 无需重启电脑

打开 iterm2, 输入命令

brew install bash
复制代码

这个时候须要把下载下来的 lucy 脚本的 "开头"部分, 加上一小段说明

#!/usr/local/bin/bash 复制代码

表示使用咱们当前下载下来的 bash, 而不是系统目录下面的 bash

仍是打开 iterm2, 这个时候, 安装一个小插件, 让界面更漂亮

brew install toilet
复制代码

安装好以后, 就进入了正文.

首先介绍下, 文件路径.

首先到~目录下, 建立一个文件夹

mkdir ssh-lucy
复制代码

建立一个 servers 的文件. (无后缀).

文件中内容放入如下东西

#服务器IP 帐号 密码 端口 主机
复制代码

实际最后放入的东西内容以下图所示

最后的主机一列, 存放的是咱们用于寻找登陆哪一个服务器的名称, 也就是咱们存入 Map 中的 key, 能够自定义.

存好服务器地址以后, 就可使用咱们真正的脚本.

服务器脚本最后保留一个空行.

我给她起了一个很是人性化的名字, 也是我心心念念的名字"lucy"([人类的始祖](<en.wikipedia.org/wiki/Lucy_(…)

gayhub 上下载文件"lucy"以后, 放入本地的

/usr/local/bin
复制代码

目录.

修改文件中的第十行内容"目录"为 servers 存在的绝对路径.

而后赋予这个文件生命

chmod +x lucy
复制代码

此刻大公告成.

此刻存在的命令以下, 延续了 AlicFeng 以前的命名

// l表示list, 表示查看列表(不包含密码)
lucy -l

// h表示help, 表示帮助
lucy -h

// s 表示ssh, 也就是平时咱们使用的登录方式
lucy -s 主机名

// p表示password, 展现包含密码的查看列表
lucy -p
复制代码

效果以下:

若是您使用了这个小脚本, 但愿能够保留 lucy 的名字, 让咱们给他一个生命的延续.
相关文章
相关标签/搜索