ssh远程服务器在22以外的某些端口上没有密码


16

我通常使用以下命令连接到远程服务器

ssh user@server.com -p 11000

然后每次为用户提供密码。每次使用ssh连接时,如何避免输入密码?

Answers:


23

首先,将其放入~/.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 serverserver用中的名称替换~/.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

这样,您只需在每次计算机启动时输入一次密码即可。


2
“叙述”还应包括如何始终避免键入讨厌的密码短语的讨论。:-)可以考虑使用ssh-agent和/或钥匙串。
Faheem Mitha

1
此外,如果远程主机上的用户名与本地主机上的用户名不同,则可以在上添加User user一行~/.ssh/config
cjm 2011年

@Faheem很好,但是我从来没有设置过这样的东西,所以我认为我无法指导其他人:)
phunehehe 2011年

@FaheemMitha你去了:)
phunehehe

嘿,迟到总比不到好。
Faheem Mitha 2014年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.