在我的移动设备和 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 的设备上不起作用。