首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何不带eval启动ssh-agent

如何不带eval启动ssh-agent
EN

Unix & Linux用户
提问于 2023-02-24 11:16:54
回答 3查看 126关注 0票数 0

我已经知道的

  • 要启动ssh-agent,需要使用命令eval $(ssh-agent)
  • 出于安全原因你必须这么做。子进程不能更改上面进程的环境变量。
  • 启动ssh-agent时,将得到2个变量,您可以手动将其导出到当前的shell。

我不知道,需要你帮我处理

  • 我是否可以以某种方式将环境变量传递给当前打开的所有终端?
  • 我是否可以将环境变量传递给整个计算机,而不是只传递一个shell?
  • 有没有一种方法可以在没有ssh-agent或手动export的情况下启动eval

(谢谢你的帮助:)

EN

回答 3

Unix & Linux用户

发布于 2023-03-04 02:05:35

我有时将输出重定向到一个文件:

代码语言:javascript
复制
ssh-agent > ~/.ssh-agent

然后,我可以在同一个窗口或另一个窗口中获取该环境,方法是:

代码语言:javascript
复制
. ~/.ssh-agent
票数 1
EN

Unix & Linux用户

发布于 2023-03-09 08:34:35

  • 我是否可以以某种方式将环境变量传递给当前打开的所有终端?

必须将变量写入文件,并在每个终端中手动获取该文件。

  • 我是否可以将环境变量传递给整个计算机,而不是只传递一个shell?

不容易。大多数进程一旦启动,就根本不接受外部环境变量的更改;它们只是按原样使用从父进程继承的环境。Shell可以通过寻找脚本在环境设置中“拉”,但您不能从进程之外“将”新的环境变量“推入”其中。(终端窗口和其中的shell是两个独立的进程,您通常关心的是shell进程的环境。)

另一方面,处理用户登录的进程出于安全原因,倾向于将它们传递给新会话的环境修剪到一些内置或由sysadmin控制的“安全”环境变量列表中。

如果您希望系统中的任何人能够在某个地方建立经过身份验证的SSH连接,您可以创建一个无密码的SSH密钥区作为根目录,使用该密钥类型的默认密钥名将其放置到/etc/skel/.ssh/目录中,现在您从该位置创建的每个用户都将自动获得该密钥的副本.由于您使用了默认名称,SSH客户端将为每个拥有密钥副本的用户自动尝试每个传出连接。

我认为这不会比授予每个人访问单个共享SSH代理更安全。实际上,使用这种方法,一个用户不能通过向共享SSH代理发送“卸载所有存储的密钥”命令来破坏其他用户的工作,就像他们在您的想法中那样.

(这似乎是一个可能的XY问题。您正试图通过共享一个SSH代理系统来实现什么?如果您刚才描述了通过共享SSH代理来解决实际问题的需求,那么可能会有更好的解决方案。)

  • 是否有一种方法可以启动ssh代理而不使用eval或手动导出?

如果您有对系统的根访问权限,可以将pam_ssh.so模块添加到系统的PAM配置中。该模块有两个功能:

  • 如果用作身份验证模块,它可以通过检查用户是否知道位于~/.ssh/login-keys.d/中的SSH密钥的密码来验证用户的身份。但这不是你感兴趣的部分。
  • 如果用作会话管理模块,它将启动SSH代理,使用属于该用户的SSH密钥自动加载SSH,这些密钥要么没有密码,要么具有与所使用的登录密码相等的密码,并将适当的环境变量插入即将启动的会话环境中。

至少Debian和相关发行版应该将pam_ssh.so PAM模块打包为libpam-ssh。其他发行版可能会将PAM库包命名不同,因此您可能需要进行一些搜索。

票数 1
EN

Unix & Linux用户

发布于 2023-02-25 01:18:52

  • 要将环境变量传递给所有开放终端,可以将导出命令添加到shell的启动脚本(例如~/..bashrc表示bash)。
  • 您不能将环境变量传递给整个计算机。每个shell会话都在自己的进程中运行,并有自己的环境变量。
  • 如果不使用eval或手动导出环境变量,就无法启动ssh代理。出于安全考虑,这些步骤是必要的,因为ssh-agent需要修改shell的环境才能正常工作。
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/739151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档