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

ome*_*itz 3 linux ssh bash

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

eval ssh-agent $SHELL
ssh-add /home/duvdevan/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

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

./ssh.sh
Run Code Online (Sandbox Code Playgroud)

但没有任何事情发生.

我不是那么bash- 所以任何帮助都是值得赞赏的.

Sto*_*ica 5

而不是运行的,你需要脚本:

. ./ssh.sh
Run Code Online (Sandbox Code Playgroud)

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

为了给出更多背景知识,以下是它的工作原理:

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

  • 不,这与此无关 (2认同)