flow2k Asked: 2019-05-15 15:08:32 +0800 CST2019-05-15 15:08:32 +0800 CST 2019-05-15 15:08:32 +0800 CST 在SSH转发中,远程ssh-agent是否存储凭据? 772 在凭据的 SSH 转发 ( ssh -A) 中,远程 ssh-agent 是否存储要转发的凭据,或者远程 ssh-agent 是否联系本地 ssh-agent 以获取每个请求所需的凭据? 这在以下情况下很重要:1.ssh -A到远程主机,2. 运行需要 SSH 凭据的长时间运行的脚本(可能scp从其他地方访问某些资源),3. 断开与远程主机的连接。 如果凭据存储在远程,这可能会飞,否则,脚本将失败,因为断开连接后可能无法访问本地 ssh-agent。 ssh openssh 1 个回答 Voted Best Answer crimson-egret 2019-05-16T08:11:39+08:002019-05-16T08:11:39+08:00 通过 SSH 代理转发ssh -A不会将(未加密的)私钥存储在远程系统上。相反,它在远程系统上设置一个套接字,该套接字通过打开的 ssh 会话隧道返回到ssh-agent在原始主机上运行的用户。远程端套接字的位置将存储在环境变量的值中,SSH_AUTH_SOCK可能类似于:/tmp/ssh-HASH/agent.PID 因此,在简单的情况下,您将无法使用代理转发来做您想做的事情,但除非您的原始主机将完全离线(例如您的笔记本电脑),否则您可以仅出于ssh-agent转发目的而保持连接打开. 是这样的: ssh -fTA REMOTE "sleep infinity" (旁白:我用 尝试过ssh -fNTA ...,但它不会创建远程代理套接字,即使我在成功转发端口时使用它 - 还不知道为什么)。 警告:代理转发设计所固有的,任何root在远程系统上拥有特权的人都可以通过套接字从本地/原始系统上的代理中读取未加密的私钥。这是一种风险,但不会破坏交易,而且肯定比在文件中编码密码更好。
通过 SSH 代理转发
ssh -A
不会将(未加密的)私钥存储在远程系统上。相反,它在远程系统上设置一个套接字,该套接字通过打开的 ssh 会话隧道返回到ssh-agent
在原始主机上运行的用户。远程端套接字的位置将存储在环境变量的值中,SSH_AUTH_SOCK
可能类似于:/tmp/ssh-HASH/agent.PID
因此,在简单的情况下,您将无法使用代理转发来做您想做的事情,但除非您的原始主机将完全离线(例如您的笔记本电脑),否则您可以仅出于
ssh-agent
转发目的而保持连接打开. 是这样的:(旁白:我用 尝试过
ssh -fNTA ...
,但它不会创建远程代理套接字,即使我在成功转发端口时使用它 - 还不知道为什么)。警告:代理转发设计所固有的,任何
root
在远程系统上拥有特权的人都可以通过套接字从本地/原始系统上的代理中读取未加密的私钥。这是一种风险,但不会破坏交易,而且肯定比在文件中编码密码更好。