Mac 电脑下最新实用ssh免密码登录脚本
mac 系统上我一直少有发现一款好用的 ssh 工具, 免去我记住多个密码的烦恼.
经过大量时间的寻找, 我发现了一款名为 SecureCRT 的工具, 可以在 mac 系统上使用, 的确可以免除我记住大量密码的烦恼, 但是使用的痛苦也随之而来.
- 不存在清理屏幕的快捷键
经常登录服务器进行测试环境的日志查阅, 这个时候, 界面上停留的可能有进入多少级目录, 然后打了什么命令, 已经其他很多无关紧要的东西在上面. 这个时候清理屏幕就显的很重要, 但是 CRT 不支持. 只能傻傻的通过工具栏上方的按钮去清除屏幕. - vim 之后不能滚轮滑动
文字已经很能说明问题了, 我就不多赘述. - 我自己的 Iterm2 上操作的很开心, 不能用他我就不开心
这一点尤为重要.
基于以上三个问题, 我决定翻出去年写的那个已经不能用的脚本来搞好他.
之前的脚本存在几个问题
- 不能展示出来列表
我目前存了多少个服务器, 我记不住, 也不能展示出来 - 好端端的坏了
进入服务器之后, 啥也不能干.
通过网上苦苦的搜索, 我找到一个朋友写的一个东西非常棒. fork 了他的项目, 改编了一下, 使其能更好的适用于我的电脑.
此处感谢 AlicFeng 的文章给我的帮助, 此处是github 地址.
首先说说为什么要重写
- 电脑上下载的时候总是提示需要管理员的权限, 但是已经使用了, 不厌其烦
- 废了好多功夫弄到本地之后, 感觉不是太会用. 这一点很尴尬.
- 简书评论区 2 楼回复的很好, 在此引用一下
-s 登录的时候,后面的编号并不是 ini 文件中的 Index 项,而是取决于 shell 过滤出来的 ini 文件顺序
基于上面 3 点功能, 打算小小的改造一下.
首先解决重点解决第三个问题.
AlicFeng 之前使用的是集合, 顺序得不到保证. 因此, 我在想, 是不是可以用 Map 类型来存储.
经过查阅资料, 发现 Map 数据类型和 bash 相关, mac 下的 bash 是 3.x, 但是 Map 数据类型必须要 4.x 以上.
于是乎, 需要升级个 bash.
方法一: 更换系统的 bash, 需要重启电脑
mac 升级 bash 之前需要关闭 SIP(System Integrity Protection).
网上有很多文章关于如何操作, 先简单介绍一下, 不清楚的可以去查阅资料.
首先重启电脑, 并按住 command+r 键, 进入恢复模式.
进入恢复模式的系统之后, 打开上方工具栏中”实用工具”下的”终端”. 在终端中输入
成功之后, 重启电脑. 这个时候就可以升级 bash 了. 打开 iterm2, 输入命令
升级成功之后输入如下命令
这个时候可以通过命令来查看是否成功
安装之后, 就可以重启电脑, 把 SIP 给启动.
然后重启电脑. |
方法二: 直接下载新的 bash, 无需重启电脑
打开 iterm2, 输入命令
这个时候需要把下载下来的 lucy 脚本的 “开头”部分, 加上一小段说明
表示使用我们当前下载下来的 bash, 而不是系统目录下面的 bash |
还是打开 iterm2, 这个时候, 安装一个小插件, 让界面更漂亮
1 | brew install toilet |
安装好之后, 就进入了正文.
首先介绍下, 文件路径.
首先到~目录下, 创建一个文件夹
1 | mkdir ssh-lucy |
创建一个 servers 的文件. (无后缀).
文件中内容放入以下东西
1 | #服务器IP 账号 密码 端口 主机 |
实际最后放入的东西内容如下图所示
最后的主机一列, 存放的是我们用于寻找登录哪个服务器的名称, 也就是我们存入 Map 中的 key, 可以自定义.
存好服务器地址之后, 就可以使用我们真正的脚本.
服务器脚本最后保留一个空行.
我给她起了一个非常人性化的名字, 也是我心心念念的名字”lucy”([人类的始祖](<https://en.wikipedia.org/wiki/Lucy_(Australopithecus))
从 gayhub 上下载文件”lucy”之后, 放入本地的
1 | /usr/local/bin |
目录.
修改文件中的第十行内容”目录”为 servers 存在的绝对路径.
然后赋予这个文件生命
1 | chmod +x lucy |
此刻大公告成.
此刻存在的命令如下, 延续了 AlicFeng 之前的命名
1 | // l表示list, 表示查看列表(不包含密码) |
效果如下:
如果您使用了这个小脚本, 希望可以保留 lucy 的名字, 让我们给他一个生命的延续.