![远程访问机器时 SSH 代理未加载](https://linux22.com/image/1478564/%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE%E6%9C%BA%E5%99%A8%E6%97%B6%20SSH%20%E4%BB%A3%E7%90%86%E6%9C%AA%E5%8A%A0%E8%BD%BD.png)
我有这个用户帐户,并已正确配置它来管理我的密钥以便通过 ssh 连接到其他实例。
当我坐在机器前时,我的配置按照我的 ~/.ssh/config 文件中所述的方式工作:
一部分:
Host vm0-test
User test
HostName vm0.test.lab
IdentityFile ~/.ssh/vm
Host vm1-test
User test
HostName vm1.test.lab
IdentityFile ~/.ssh/vm
Host vm2-test
User test
HostName vm2.test.lab
IdentityFile ~/.ssh/vm
但是每次我远程 ssh 到这台机器时,我都需要手动执行以下步骤:
remote $ eval `ssh-agent`
remote $ ssh-add ~/.ssh/vm
每次我 ssh 时如何强制它加载我的本地配置?
答案1
您的config
文件并未启动代理。它只是提供了三个别名,并分配了要使用的密钥文件。如果此密钥文件 ( ~/.ssh/vm
) 受密码保护(理应如此)且没有代理正在运行,则每次使用密钥时都必须输入此密码。这就是我们使用代理的原因。
您的代理必须在其他地方启动。如果它未在远程登录时启动,则它可能会在图形会话(某些关键服务)启动时启动。这就是为什么您必须手动启动它以进行远程 ssh。
所以,你可以做什么?
- 找到 ssh-agent 启动的位置,以了解为什么它不能完成远程会话。
- 从内部启动 ssh-agent
.profile
,例如查看那。
如果您.profile
正在检查已运行的代理,它不会干扰图形会话的代理。这适用于本地图形会话和远程文本会话。