Go 分享一个 ssh 命令行自动化的小工具

daqing · 2021年08月23日 · 最后由 kowalskidark 回复于 2021年08月23日 · 450 次阅读

在开发中,经常遇到需要 ssh 登录服务器,然后执行一些命令的情况。

但是,很多开发机器都是普通的需要输入密码的方式来登录,每次都要交互式输入密码,没法自动化运行。

为了解决这个问题,同时锻炼一下 Go 的开发能力,就写了一个小工具。

项目地址:https://github.com/daqing/sshc

使用方法在 README 介绍了。

主要支持 3 个命令:

  • run: 执行命令,比如 sshc -c $HOME/hosts example run "ls /tmp"
  • cp/scp: 上传本地文件到远程服务器
  • dl: 下载远程服务器文件到本地

举个例子来说明用途:

  1. 先用 bash 创建一个 alias:

    alias scloud="sshc -c $HOME/hosts cloud"

  2. 然后执行以下命令:

    scloud run "iptables-save > /tmp/iptables"
    scloud run "sed -i -e '/9200/d' /tmp/iptables"
    scloud run "iptables-restore < /tmp/iptables"
    

    以上脚本实现的功能是:取消服务器对 9200 端口的防火墙规则。

  1. 开发机也不该用密码登录,AC 发证书,或者至少该用普通的 ECC key
  2. 不管 ACL/MAC 还明文存密码
  3. https://linux.die.net/man/1/sshpass
  4. https://stackoverflow.com/questions/12202587/automatically-enter-ssh-password-with-script
需要 登录 后方可回复, 如果你还没有账号请 注册新账号