最近发现ssh代理转发还挺有意思,记录一下这个过程:有机器A 、B、C ,原本是准备在A上生成密钥对,实现登录到B与C免密登录,结果发现,使用SecureCRT绑定A的密钥登录B与C后,三个机器都是可以相互免密登录了,也就是B与C上都只有A的公钥,也可以相互免密登录。从openssh官方得到的答复是,代理转发了key到B与C,并保存下来了。
SecureCRT默认是开启代理并进行转发,我这个CRT是比较老的版本,新版本位置有些不同,但功能都实现了,如下图:
1、首先我们需要了解,我们使用 ssh-keygen -t 【】工具生成密钥对的时候,虽然有公钥与私钥,但其实,私钥中也包含了公钥,查看方式如下:
2、了解ssh-key代理转发的流程
启动ssh agentà 添加私钥到代理 —》 -A 参数转发到目标机器
例如启动:
#eval `ssh-agent`
Agent pid 11136
3、我们可以查看现在已经添加到机器的密钥列表
# ssh-add -l
The agent has no identities.
4、增加一个密钥到代理列表
# ssh-add ./key/id_rsa
Identity added: ./key/id_rsa (./key/id_rsa)
再次查看:
# ssh-add -l
2048 SHA256:Uo41sgqKaY0GU7tc9EyxrK58kXVhAzrQGciHQBpZjds ./key/id_rsa (RSA)
5、我们利用密钥登陆远程机器
# ssh -p 11122 -A -i key/id_rsa root@172.44.62.252
Last login: Fri May 14 17:25:15 2021 from 172.44.62.245
# ssh-add -l
2048 SHA256:Uo41sgqKaY0GU7tc9EyxrK58kXVhAzrQGciHQBpZjds ./key/id_rsa (RSA)
我们发现,已经将这个密钥带过来了。其次、代理中除了增加本机的密钥,也可以增加其他的进行转发,ssh-add 密钥 , 即可! 但需要注意权限问题【chmod 400 id_rsa】,否则会出现下面的错误:
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
6、关于没有启动 ssh-agent ,不能增加密钥
# ssh-add id_rsa
Could not add identity "id_rsa": agent refused operation
# eval `ssh-agent`
Identity added: id_rsa (id_rsa)
# ssh-add id_rsa
Agent pid 32737
7、重新登录后服务器,执行ssh-add -l 发现报错 ,但进程在。
# ssh-add -l
error fetching identities for protocol 1: agent refused operation
# ps -ef | grep ssh
root 3106 1 0 10:00 ? 00:00:00 ssh-agent
root 3285 16829 0 10:01 ? 00:00:00 sshd: root@pts/0
root 3317 3287 0 10:01 pts/0 00:00:00 grep --color=auto ssh
root 16829 1 0 May14 ? 00:00:00 /usr/sbin/sshd -D
需要重启ssh-agent,才能正常工作:
# eval `ssh-agent`
Agent pid 32737
# ssh-add -l
The agent has no identities.
8、ssh-agent自动开启和退出的方法,每次登录和退出执行 开启agent和关闭agent 。
trap 'test -n "$SSH_AGENT_PID" && eval `/usr/bin/ssh-agent -k`' 0 //【#退出关闭】
eval $(ssh-agent -s) //【#登录开启】
#vim ~/.bashrc
登录与退出分别提示:
Agent pid 2734
Agent pid 2734 killed
9、自动增加相应的密钥实现
每次退出ssh-add -l ,已经添加的列表会不见,类似于执行了ssh-add -D 。这是由于上一次agent已经退出,每次Agent pid 4863 都重新起来了。这样执行自动增加需要的key :
#vim ~/.bashrc
ssh-add /root/01_id_rsa
ssh-add /root/02_id_rsa
重新登陆提示:
Agent pid 4863
Identity added: /root/id_rsa (/root/01id_rsa)
Identity added: /root/id_rsa (/root/02id_rsa)
# ssh-add -l
2048 SHA256:7uC5WNDyxDf4ids0PJ6rEypr8DfqjKOybPBhUFyWwnY /root/01id_rsa (RSA)
2048 SHA256:euC2WNDyxDf4ids0PJ6rEypr8DfqjKOybPBhUFyW1de /root/02id_rsa (RSA)
相关总结: 通过上面这些示例,其实不难发现,转发代理操作多多少少会存在安全问题,所以非特殊情况下,不建议开启和使用代理方式进行操作。
内容版权声明:【蓝色网居】部分资源来源于网络,如有侵犯您的所有权,请随时告知我们,我们将立即删除!感谢配合!
转载请注明出处:https://blog.ff56.cn/qita/1657867708.html