通过 Bash 脚本将密钥添加到 SSH-Agent 时出现“权限被拒绝(公钥)”

通过 Bash 脚本将密钥添加到 SSH-Agent 时出现“权限被拒绝(公钥)”

在我的移动设备和 Raspberry Pi(恰好分别是 AArch 和 ARM CPU)上,ssh-agent默认情况下均未加载。

我首先必须启动ssh-agent

eval `ssh-agent -s`

然后我继续将密钥添加到代理:

ssh-add /home/jimjamz/.ssh/myKey

系统提示我输入密码。然后密钥被添加到代理:

Enter passphrase for /home/jimjamz/.ssh/myKey: 
Identity added: /home/jimjamz/.ssh/myKey (/home/jimjamz/.ssh/myKey)

然后我可以连接到我的远程服务器,而不必再次指定我的密钥。

为了方便起见,我想将上述内容添加到启动代理并添加密钥的脚本中:

#!/bin/bash
eval `ssh-agent -s`
ssh-add /home/jimjamz/.ssh/myKey

当我运行脚本时,我可以看到代理进程已启动,并提示我输入私钥的密码。我正确输入了密码,密钥就添加到代理中了。

但是,当我尝试 ssh 到我的远程服务器时,我看到以下内容:

Permission denied (publickey).

问题似乎出ssh-add在我的 bash 脚本中。如果我手动调用ssh-add脚本之外的内容,然后尝试通过 ssh 连接到我的远程服务器,则可以连接。

ssh-add如果在 bash 脚本中调用,为什么它不能识别出该键已被添加?

如果我在其他机器上运行 bash 脚本(默认情况下已加载 ssh-agent),则脚本中添加的密钥可以成功用于 ssh 到远程服务器。它似乎在默认情况下未自动运行 ssh-agent 的设备上不起作用。

相关内容