每次我从无头 Ubuntu 服务器通过 SSH 连接到另一台服务器时,我都会被要求输入密钥文件的密码。即使我之前已经连接到服务器。
你知道为什么会这样吗?它可能像ssh-agent当前未运行之类的简单。
我的 Ubuntu Gnome 桌面上的相同键工作正常。服务器和桌面都运行 Ubuntu 10.10。
ps -ef | grep '[s]sh-agent'
simon 3219 1 0 12:46 ? 00:00:00 ssh-agent
Run Code Online (Sandbox Code Playgroud)
enz*_*tib 10
即使代理已启动,如果某些环境变量未设置,您也无法引用代理。此外,即使一切正常,代理和变量,身份也不会自动发送给代理:这是 的任务ssh-askpass,仅在 X 会话中工作。
如果您使用的是 bash,请~/.bash_profile使用以下内容创建文件:
# File: ~/.bash_profile
# source ~/.profile, if available
if [[ -r ~/.profile ]]; then
. ~/.profile
fi
# start agent and set environment variables, if needed
agent_started=0
if ! env | grep -q SSH_AGENT_PID >/dev/null; then
echo "Starting ssh agent"
eval $(ssh-agent -s)
agent_started=1
fi
# ssh become a function, adding identity to agent when needed
ssh() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/ssh "$@"
}
export -f ssh
# another example: git
git() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/git "$@"
}
export -f git
Run Code Online (Sandbox Code Playgroud)
~/.ssh/id_dsa根据您的需要修改文件名,并将这一行添加到~/.bash_logout
# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
echo "Killing ssh agent"
ssh-agent -k
fi
Run Code Online (Sandbox Code Playgroud)
最后一个注意事项:这不会干扰 gnome 会话,因为在这种情况下,只有~/.profile来源,并且您可以从ssh-askpass图形界面中受益,该界面要求输入密码并将其发送到ssh-agent.
| 归档时间: |
|
| 查看次数: |
12343 次 |
| 最近记录: |