自动化 ssh 授权笔记

每次 ssh user@host 登录目标机器都要输密码是件很烦的事,特别是经常访问多台主机的情况。 最近写自动化脚本时碰到要自动做机器间 ssh 验证,碰到一些问题记录下来备忘。

分析

  1. 通过 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 命令生成本地机器的私钥和公钥: ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub
  2. 授权就是将将本地机器的公钥加入到目标机器的 ~/.ssh/authorized_keys 中供验证用
  3. 本地 ~/.ssh/known_hosts 中信任目标机器的公钥指纹

自动做 ssh-key 授权


# copy local ssh-key to remote 对应分析中的第二步
cat ~/.ssh/id_rsa.pub | ssh root@192.168.37.110 "cat >> ~/.ssh/authorized_keys"

# add host to known_hosts 对应分析中的第三步
ssh-keyscan -t rsa "192.168.37.110" >> ~/.ssh/known_hosts

或者这两条命令可以精简为如下一条

brew install ssh-copy-id # just for mac

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.37.110

还有剩下的一个难题是还需要手动输入密码,这个怎么自动化呢?

# just for mac
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb 

sshpass -p "PASSWORD" ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@192.168.37.110

或者使用 Fabric 等远程执行 run("cmd")

# tips 执行 sudo 不需要手动输入密码
echo "PASSWORD" | sudo -S CMD

用 iterm2 做 terminal 管理

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,850评论 19 139
  • SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group...
    shuff1e阅读 5,754评论 1 11
  • 我们知道如果要向远程服务器传输数据和操作必须输入用户名和密码远程登录服务器 ,或用FTP等协议,都需要权限控制。 ...
    欢醉阅读 5,060评论 1 4
  • 说好的台风呢,怎么没有动静了,楼下还是载歌载舞,童声嬉闹,一天的天空变了百八十遍,ZY还说好了今晚来跟我睡,还说要...
    李小小4161阅读 2,801评论 0 0
  • 类和结构体 1.Swift中类和结构体有很多共同点: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访...
    cht005288阅读 3,486评论 0 0

友情链接更多精彩内容