Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从另一个非root用户访问SSH_AUTH_SOCK大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

场景: 我在我的本地PC上运行ssh-agent,我的所有服务器/客户端都设置为转发SSH代理身份验证.我可以在我的本地PC上使用ssh-agent在我的所有机器之间跳转.这样可行. 我需要能够以自己(user1)的身份SSH到机器,更改为另一个名为user2的用户(sudo -i -u user2),然后使用我在本地PC上运行的ssh-agent ssh到另一个盒子.假设我想做类似ssh use
场景:

我在我的本地PC上运行ssh-agent,我的所有服务器/客户端都设置为转发SSH代理身份验证.我可以在我的本地PC上使用ssh-agent在我的所有机器之间跳转.这样可行.

我需要能够以自己(user1)的身份SSH到机器,更改为另一个名为user2的用户(sudo -i -u user2),然后使用我在本地PC上运行的ssh-agent ssh到另一个盒子.假设我想做类似ssh user3 @ machine2的事情(假设user3在authorized_keys文件中有我的公共SSH密钥).

我有sudo配置为保持SSH_AUTH_SOCK环境变量.

涉及的所有用户(用户[1-3])都是非特权用户(非root用户).

问题:

当我更改为另一个用户时,即使SSH_AUTH_SOCK变量设置正确,(假设其设置为:/tmp/ssh-HbKVFL7799/agent.13799)user2也无法访问user1创建的套接字 – 当然有意义,否则user2可能会劫持user1的私钥并以该用户的身份跳转.

如果不是通过sudo为user2获取shell,这种情况可以正常工作,我通过sudo for root获得一个sHell.因为自然root可以访问机器上的所有文件.

问题是:

最好使用sudo,如何从user1更改为user2,但仍然可以访问user1的SSH_AUTH_SOCK?

解决方法

您需要做两件事:

>设置SSH_AUTH_SOCK变量,使其指向正确的文件
>允许其他用户连接到套接字(使用文件系统权限)

因此,你可以做的是:

作为user1,允许user2连接到套接字(完全访问套接字和进入目录的权限).我希望你的/ tmp允许ACl.

setfacl -m u:user2:rw $SSH_AUTH_SOCK
setfacl -m u:user2:x $(dirname $SSH_AUTH_SOCK)

切换到其他用户,并正确导出变量.

sudo -u user2 env SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh user3@machine2

如果要使用sudo打开交互式sHell,则必须在获取sHell后自行导出SSH_AUTH_SOCK变量.

大佬总结

以上是大佬教程为你收集整理的从另一个非root用户访问SSH_AUTH_SOCK全部内容,希望文章能够帮你解决从另一个非root用户访问SSH_AUTH_SOCK所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。