关于ssh代理转发的一些思考


最近发现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)


相关总结: 通过上面这些示例,其实不难发现,转发代理操作多多少少会存在安全问题,所以非特殊情况下,不建议开启和使用代理方式进行操作。







本文标签: ssh代理 转发

内容版权声明:【蓝色网居】部分资源来源于网络,如有侵犯您的所有权,请随时告知我们,我们将立即删除!感谢配合!

转载请注明出处:https://blog.ff56.cn/qita/1657867708.html


【手机扫一扫查看文本】

手机扫一扫 手机扫一扫查看文本 手机扫一扫





docker 集群 自定义 修改默认网段 保留和删除 日志管理 shell判断 head命令 ssh代理 常用的linux 目录 常用案例 远程仓库 phpmyadmin安装 批量 python3 转发 持久化AOF rewrite操作 linux tail linux系统优化 history记录 docker迁移 rediscluster