ssh-agent,需要使用命令eval $(ssh-agent)ssh-agent时,将得到2个变量,您可以手动将其导出到当前的shell。ssh-agent或手动export的情况下启动eval?(谢谢你的帮助:)
发布于 2023-03-04 02:05:35
我有时将输出重定向到一个文件:
ssh-agent > ~/.ssh-agent然后,我可以在同一个窗口或另一个窗口中获取该环境,方法是:
. ~/.ssh-agent发布于 2023-03-09 08:34:35
必须将变量写入文件,并在每个终端中手动获取该文件。
不容易。大多数进程一旦启动,就根本不接受外部环境变量的更改;它们只是按原样使用从父进程继承的环境。Shell可以通过寻找脚本在环境设置中“拉”,但您不能从进程之外“将”新的环境变量“推入”其中。(终端窗口和其中的shell是两个独立的进程,您通常关心的是shell进程的环境。)
另一方面,处理用户登录的进程出于安全原因,倾向于将它们传递给新会话的环境修剪到一些内置或由sysadmin控制的“安全”环境变量列表中。
如果您希望系统中的任何人能够在某个地方建立经过身份验证的SSH连接,您可以创建一个无密码的SSH密钥区作为根目录,使用该密钥类型的默认密钥名将其放置到/etc/skel/.ssh/目录中,现在您从该位置创建的每个用户都将自动获得该密钥的副本.由于您使用了默认名称,SSH客户端将为每个拥有密钥副本的用户自动尝试每个传出连接。
我认为这不会比授予每个人访问单个共享SSH代理更安全。实际上,使用这种方法,一个用户不能通过向共享SSH代理发送“卸载所有存储的密钥”命令来破坏其他用户的工作,就像他们在您的想法中那样.
(这似乎是一个可能的XY问题。您正试图通过共享一个SSH代理系统来实现什么?如果您刚才描述了通过共享SSH代理来解决实际问题的需求,那么可能会有更好的解决方案。)
如果您有对系统的根访问权限,可以将pam_ssh.so模块添加到系统的PAM配置中。该模块有两个功能:
~/.ssh/login-keys.d/中的SSH密钥的密码来验证用户的身份。但这不是你感兴趣的部分。至少Debian和相关发行版应该将pam_ssh.so PAM模块打包为libpam-ssh。其他发行版可能会将PAM库包命名不同,因此您可能需要进行一些搜索。
发布于 2023-02-25 01:18:52
https://unix.stackexchange.com/questions/739151
复制相似问题