我通常使用以下命令连接到远程服务器
ssh user@server.com -p 11000
然后每次为用户提供密码。每次使用ssh连接时,如何避免输入密码?
我通常使用以下命令连接到远程服务器
ssh user@server.com -p 11000
然后每次为用户提供密码。每次使用ssh连接时,如何避免输入密码?
Answers:
首先,将其放入~/.ssh/config
:
Host server
HostName server.com
Port 11000
User user
您将能够进行输入ssh server
,然后输入密码。
其次,检查~/.ssh/
是否有名为id_rsa
和的文件id_rsa.pub
。如果没有,则没有任何密钥设置,因此必须使用生成一个密钥对ssh-keygen
。您可以为密钥输入密码,也可以不输入密码。生成的文件id_rsa.pub
应如下所示:
ssh-rsa lotsofrandomtext user @ local
第三,ssh到服务器,~/.ssh/authorized_keys
如果文件不存在,则创建该文件。然后附加~/.ssh/id_rsa.pub
您在此处前面生成的的内容。这可能意味着将文件内容复制到剪贴板,然后~/.ssh/authorized_keys
在文本编辑器中打开并粘贴内容。
或者,使用命令ssh-copy-id server
(server
用中的名称替换~/.ssh/config
)。这将执行与上述相同的操作。有时我看到ssh-copy-id
卡住了,所以我不太喜欢。
现在,您应该可以使用just 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
这样,您只需在每次计算机启动时输入一次密码即可。
User user
一行~/.ssh/config
。
转到基于密钥的身份验证。
ssh -P 11000
我就可以用ssh复制。非常感谢。
作为补充phunehehe的回答,看到的Gentoo Linux钥匙扣指南为指导,以钥匙扣。钥匙串还使用ssh-agent。ssh-agent守护程序使密码短语可用(当ssh-agent守护程序死亡时,密码短语不可用),但是使用keychain reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in
引用该指南。