我目前有一个设置,它允许我通过 SSH 和 RSA 密钥连接到家庭网络上的所有计算机。我非常注重安全,所以我的所有密钥都受密码保护。我想本质上设置一些东西,在 cron 作业上运行 Unison 来备份到我网络上的文件服务器,我们将其称为timmy
。我注意到,第一次尝试在我的 Ubuntu 笔记本电脑上使用密钥时teeks
,会弹出一个对话框,要求我输入密钥密码。我听说对于需要进行此类自动备份的服务器,应该ssh-agent
在登录/服务器启动时要求输入密钥密码。我该如何在上设置它teeks
?
我本质上希望发生以下事情:
- 当我启动并进入操作系统时,会像第一次使用密钥时一样提示输入密码。
- 如果我通过 SSH 进入这台计算机(因为它面向互联网),并且我还没有提供 SSH 密码,那么系统会提示我输入密码。(有时,我可能需要通过 SSH 远程重启机器,因此我将在机器重启后通过 SSH 进入,我希望能够验证密钥没有必须通过 VNC 手动进行。)
是否有一个工具可以帮助我实现这一目标?
答案1
你可以在登录到 shell 时通过将以下内容放入你的来启动 ssh-agent .profile
:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
答案2
为了避免输入 ssh 密码(并自动执行任务),您可以使用 ssh 证书,基本设置是为您想要登录的用户生成证书,然后将此证书复制到您想要连接的机器/用户。有必要确保您的 ssh 服务器配置为接受证书登录。您必须确保您的证书在从一台机器复制到另一台机器时不会受到损害。
您可以在以下位置查看样本http://www.panticz.de/ssh_certificate_authentication更多详细信息请参阅 openssh 站点http://www.openssh.com/
问候