如何通过SH脚本运行ssh-agent和ssh-add?

时间:2016-05-13 12:05:39

标签: linux bash ssh

我在连接VPS时手动运行以下两个命令:

eval ssh-agent $SHELL
ssh-add /home/duvdevan/.ssh/id_rsa

我尝试将它们添加到ssh.sh并使用以下命令在该目录中运行:

./ssh.sh

但没有任何事情发生。

我不是那个bash - 精明所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:5)

您需要脚本而不是运行:

. ./ssh.sh

否则,eval命令设置的环境变量在当前shell中将不可见,因此无法知道在哪里找到正在运行的ssh代理。

为了提供更多背景信息,请参阅以下内容:

  • ssh-agent命令启动ssh代理,并打印到stdout您需要设置以连接到代理的环境变量。输出格式化为要执行的命令。对于测试,您只需运行此命令并查看其打印内容
  • 即可
  • eval命令执行ssh-agent打印的命令。如前所述,这些是设置环境变量的命令。执行完这些后,您将在此shell中运行的ssh命令将知道在何处找到代理
  • ssh-add命令能够找到代理,这要归功于之前设置的环境变量
  • 设置这些变量,直到脚本退出。当您运行./ssh.sh时,变量将在该脚本的进程内设置,并在脚本完成后更长时间可用
  • 通过使用ssh.sh获取.脚本,内部命令将在当前shell中执行,因此环境变量仍然设置,因此您的ssh相关命令可以找到代理< / LI>