在SSH转发凭证(ssh -A
)中,对于每个请求,远程ssh-agent是否存储要转发的凭证,或者远程ssh-agent是否按需联系本地ssh-agent以获取凭证?
这在以下情况下很重要:1.连接ssh -A
到远程主机,2.运行需要SSH凭据的长时间运行的脚本(可能连接到scp
其他地方的某些资源),3.断开与远程主机的连接。
如果凭据存储在远程服务器上,则它可能会运行,否则,脚本将失败,因为断开连接后可能无法访问本地ssh-agent。
通过SSH代理转发ssh -A
确实不是存储在远程系统上的(未加密)私钥。而是在远程系统上设置一个套接字,该套接字通过打开的ssh会话隧穿回ssh-agent
原主机上运行的用户。套接字在远程端的位置将存储在环境变量的值中,SSH_AUTH_SOCK
并且可能类似于:/tmp/ssh-HASH/agent.PID
因此,在简单的情况下,您将无法使用代理转发来完成您想做的事情,但是除非您的原始主机要完全脱机(例如,您的笔记本电脑),否则您可以将连接保持打开状态仅用于ssh-agent
转发目的。。像这样的东西:
ssh -fTA REMOTE "sleep infinity"
(除了:我尝试了使用ssh -fNTA ...
,但是即使成功转发端口时也不会使用它来创建远程代理套接字-不知道为什么)。
CAVEAT:代理转发设计固有的,任何root
在远程系统上具有特权的人都可以通过套接字从本地/起源系统上的代理中读取未加密的私钥。这是一种风险,但不会破坏交易,并且肯定比在文件中编码密码更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句