首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换eval‘ssh-agent’和exec ssh-agent bash

替换eval‘ssh-agent’和exec ssh-agent bash
EN

Stack Overflow用户
提问于 2018-07-11 14:28:23
回答 1查看 4.2K关注 0票数 0

运行这些命令中的任何一个似乎成功地启动了SSH代理进程:

代码语言:javascript
复制
eval `ssh-agent`

代码语言:javascript
复制
exec ssh-agent bash

我倾向于第一个,因为第二个exec替换了shell。显然,第二种方法是使用eval,有些人对此不屑一顾,但我看不到其他的选择。

我的问题是:

  1. exec在更换外壳时是否有任何负面的副作用,或者甚至有任何副作用?我是否有理由担心使用exec
  2. 我使用eval没有问题,但出于兴趣,没有脚本或函数的有哪些替代命令(以及没有execeval)在一行中启动ssh代理进程?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-11 14:37:05

这是对eval的“安全”使用,至少在某种程度上您可以信任ssh-agent只输出简单的、硬编码的任务,类似于

代码语言:javascript
复制
SSH_AUTH_SOCK=/var/folders/...; export SSH_AUTH_SOCK;
SSH_AGENT_PID=xxxxx; export SSH_AGENT_PID;
echo Agent pid xxxxx;

ssh-agent的输出是专门设计来传递给eval的,让我们来面对它:如果ssh-agent想要做坏事,它可以以一种更安静的方式这样做。

使用exec的缺点是替换原始shell的新shell可能不是相同的;环境是继承的,但是在.bashrc中找不到的一些shell设置可能不同。但是,如果将exec ssh-agent bash放在.bashrc中(特别是作为最后一行),您的shell的配置实际上没有任何机会与.bashrc所做的任何事情不同。(您的.bashrc中也可能有非幂等代码,这意味着执行它两次将导致与只执行一次不同的行为。但同样,这是不太可能的,而且很容易审计。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51288089

复制
相关文章

相似问题

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