使用ssh-agent,实现ssh完全免密码登陆
使用ssh-agent
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。
其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。通过使用ssh-agent就可以很方便的在不的主机间进行漫游了
生成无密码的密匙
#ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 0a:a2:42:2e:86:08:fa:ab:57:2f:70:21:db:98:ff:73 root@ssdb2 The key's randomart image is: +--[ RSA 2048]----+ || || || |. .| |...*..S| |B.=.+. .| |Bo = ..| |+.. o o E| |.oo. o.o| +-----------------+ 一路回车生成无密码的登录key
启用ssh-agent:
#eval `ssh-agent` Agent pid 1489
设置守护进程脚本:
#cat /root/.ssh/environment SSH_AUTH_SOCK=/tmp/ssh-TwInyl1488/agent.1488; export SSH_AUTH_SOCK; SSH_AGENT_PID=1489; export SSH_AGENT_PID; #echo Agent pid 1489;
我们可以检查代理是否正在运行:
ps -ef | grep ssh-agent root148910 23:39 ?00:00:00 ssh-agent
到这里基本上已经大功告成了,还有一个小问题那就是总不能每次重启都手动运行ssh-agent吧!最省时的方法就是将它写到profile中去:
为了不把profile搞乱,我在在/etc/profile.d下建一个ssh-agent.sh文件:
[root@supersun.biz ~]#cat /etc/profile.d/ssh-agent.sh #!/bin/bash SSH_ENV=/root/.ssh/environmentfunction start_agent { echo "Initialising new SSH agent..." /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} echo succeeded chmod 600 ${SSH_ENV} . ${SSH_ENV} > /dev/null ssh-add /data/manager/ssh_keys/manager }if [ -f "${SSH_ENV}" ]; then . ${SSH_ENV} > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi
把专有密钥添加到 ssh-agent 中
ssh-add ~./ssh/id_dsa
查看 ssh-agent 中的密钥
#ssh-add -l
参考文档:
https://www.aliyun.com/jiaocheng/1384300.html
http://blog.joncairns.com/2013/12/understanding-ssh-agent-and-ssh-add/
https://blog.csdn.net/cityzenoldwang/article/details/77097661
【使用ssh-agent,实现ssh完全免密码登陆】转载于:https://blog.51cto.com/hellvenus/2319315
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入