linux – 转发对ssh-agent identitites子集的访问

linux – 转发对ssh-agent identitites子集的访问,第1张

概述我为两家公司工作(我们称之为RedCorp和BlueCorp).他们都信任我,但他们不相互信任,我不想把对方的秘密暴露给对方. 我的笔记本电脑的ssh-agent有两个私钥,一个用于访问每个公司.我可以跑: ssh -A redcorp-server1 并且凭借我转发的代理连接,从那里访问redcorp的所有其他服务器. 同样,我可以运行: ssh -A bluecorp-server1 并从那里 我为两家公司工作(我们称之为RedCorp和BlueCorp).他们都信任我,但他们不相互信任,我不想把对方的秘密暴露给对方.

我的笔记本电脑的ssh-agent有两个私钥,一个用于访问每个公司.我可以跑:

ssh -A redcorp-server1

并且凭借我转发的代理连接,从那里访问redcorp的所有其他服务器.

同样,我可以运行:

ssh -A bluecorp-server1

并从那里访问所有bluecorp的其他服务器.

问题是,每当我登录redcorp-server1时,root用户可以设置他的$SSH_AUTH_SOCK指向我转发的代理连接,并滥用我的其他身份进入BlueCorp.

我怎么能防止这种情况?

ssh的IDentitIEsOnly选项不能做我想要的.这只控制我在验证redcorp-server1时提供的密钥;它不会改变我转发的代理连接允许redcorp-server1上的ssh进程使用我的任何身份进行身份验证的事实.

我发现的唯一解决方案是运行两个单独的ssh-agent,并且只将一个密钥加载到每个代理中.但这是一个巨大的痛苦:ssh_config节无法指定在连接到给定主机时我应该使用哪些代理.相反,我必须在我的笔记本电脑上为两个团队中的每一个制作shell别名,这两个团队在运行ssh之前将$SSH_AUTH_SOCK指向正确的代理.另外,我使用rsync和其他一些使用ssh作为传输的工具,并且每个工具都必须使用不同的语法进行配置,以使其以这种特殊方式调用ssh.

有一个更好的方法吗?

解决方法 我为自己实现了 ssh-agent-filter,使用它:
$afssh -c ID_bluecorp -- server1.bluecorp.com$afssh -c ID_bluecorp -- server2.bluecorp.com$afssh -c ID_redcorp -- server42.redcorp.com

它已经在Debian(和Ubuntu)中.

总结

以上是内存溢出为你收集整理的linux – 转发对ssh-agent identitites子集的访问全部内容,希望文章能够帮你解决linux – 转发对ssh-agent identitites子集的访问所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1040548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存