【发布时间】:2016-05-13 21:02:23
【问题描述】:
当我在我的 VPS 上连接时,我手动运行了以下两个命令:
eval ssh-agent $SHELL
ssh-add /home/duvdevan/.ssh/id_rsa
我尝试将它们添加到 ssh.sh 并在该目录中运行它:
./ssh.sh
但是什么也没发生。
我不是那种bash-savvy,所以任何帮助表示赞赏。
【问题讨论】:
当我在我的 VPS 上连接时,我手动运行了以下两个命令:
eval ssh-agent $SHELL
ssh-add /home/duvdevan/.ssh/id_rsa
我尝试将它们添加到 ssh.sh 并在该目录中运行它:
./ssh.sh
但是什么也没发生。
我不是那种bash-savvy,所以任何帮助表示赞赏。
【问题讨论】:
您需要source脚本而不是运行:
. ./ssh.sh
否则,eval 命令设置的环境变量在你当前的 shell 中将不可见,因此它不知道在哪里可以找到正在运行的 ssh 代理。
为了提供更多背景知识,以下是它的工作原理:
ssh-agent 命令启动 ssh 代理,并将您需要设置以连接到代理的环境变量打印到标准输出。输出被格式化为要执行的命令。对于测试,您可以运行此命令并查看它打印的内容eval 命令执行ssh-agent 打印的命令。如前所述,这些是设置环境变量的命令。执行完这些后,您将在此 shell 中运行的 ssh 命令将知道在哪里可以找到代理ssh-add 命令能够找到代理,这要归功于之前设置的环境变量./ssh.sh 时,变量会在该脚本的进程中设置,并且在脚本完成后不再可用. 获取ssh.sh 脚本,里面的命令将在当前shell 中执行,因此仍然设置环境变量,因此您的ssh 相关命令可以找到代理【讨论】:
#/sh/bash 添加到我的.sh 脚本的顶部吗?