Pra*_*tha 16 ssh authentication
我通常连接到远程服务器
ssh 用户@server.com -p 11000
然后每次为用户提供密码。我应该如何避免每次使用 ssh 连接时都输入密码?
phu*_*ehe 23
首先,把它放在~/.ssh/config:
Host server
HostName server.com
Port 11000
User user
Run Code Online (Sandbox Code Playgroud)
您将能够ssh server,然后键入密码。
其次,检查~/.ssh/是否有名为id_rsa和 的文件id_rsa.pub。如果没有,则您没有设置任何密钥,因此您必须使用ssh-keygen. 您可以为密钥设置密码或不设置密码。生成的文件id_rsa.pub应如下所示:
ssh-rsa lotofrandomtext user@local
第三,ssh到服务器,~/.ssh/authorized_keys如果文件不存在就创建。然后在~/.ssh/id_rsa.pub此处附加您之前生成的 的内容。这可能意味着将文件内容复制到剪贴板,然后~/.ssh/authorized_keys在文本编辑器中打开并粘贴内容。
或者,使用命令ssh-copy-id server(替换server为 中的名称~/.ssh/config)。这将做与上面相同的事情。有时我看到ssh-copy-id卡住了,所以我真的不喜欢它。
您现在应该可以只使用 ssh ssh server,除非您选择使用密码保护您的私钥。通常,如果您不使用密码短语,您应该通过其他方式(例如全盘加密)保护您的私钥。
第四(仅当您使用密码保护您的私钥时才需要),将其放入~/.bashrc:
start_ssh_agent() {
# Try to use an existing agent
save=~/.ssh-agent
if [[ -e "$save" ]]
then
. "$save" > /dev/null
fi
# No existing agent, start a new one
if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
then
ssh-agent > "$save"
. "$save" > /dev/null
ssh-add
fi
}
start_ssh_agent
Run Code Online (Sandbox Code Playgroud)
有了这个,您只需在每次计算机启动时输入一次密码。
作为 phunehehe 答案的补充,请参阅Gentoo Linux Keychain Guide以获取keychain指南。钥匙串还使用ssh-agent。ssh-agent 守护进程使密码可用(当 ssh-agent 守护进程终止时它变得不可用),但 keychain reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in,引用指南。