ssh 远程服务器上除 22 以外的某个端口,无需密码

ssh 远程服务器上除 22 以外的某个端口,无需密码

我通常使用以下方式连接到远程服务器

SSH[电子邮件受保护]-p 11000

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

答案1

第一的,把这个放进去~/.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 很多随机文本 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

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

答案2

答案3

作为 phunehehe 答案的补充,请参阅Gentoo Linux 钥匙串指南获取指南钥匙链。钥匙扣也使用ssh代理。 ssh-agent 守护进程使密码可用(当 ssh-agent 守护进程终止时它变得不可用),但 keychain reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in,引用指南。

相关内容