乐闻世界logo
搜索文章和话题

如何在没有密码的情况下ssh到localhost?

1 个月前提问
1 个月前修改
浏览次数17

1个答案

1

要在没有密码的情况下使用SSH连接到localhost,可以通过配置SSH密钥认证来实现。下面是详细的步骤:

步骤 1: 生成SSH密钥

首先,你需要在你的机器上生成一对SSH密钥(一个公钥和一个私钥)。这可以通过 ssh-keygen 命令来完成。默认情况下,这会生成一个RSA密钥对。

bash
ssh-keygen -t rsa -b 4096

当系统提示你输入文件保存路径时,可以直接按回车键使用默认路径(通常是~/.ssh/id_rsa)。如果系统询问是否要输入密码(passphrase),为了实现无密码登录,这里不输入密码直接按回车。

步骤 2: 将公钥添加到认证文件

接下来,你需要将生成的公钥(默认位置是 ~/.ssh/id_rsa.pub)添加到同一用户的 ~/.ssh/authorized_keys 文件中。这可以通过下面的命令完成:

bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

确保~/.ssh/authorized_keys 文件的权限是正确的。可以使用下面的命令设置:

bash
chmod 600 ~/.ssh/authorized_keys

步骤 3: 确认SSH服务器配置

确保你的SSH服务器配置(通常在 /etc/ssh/sshd_config 文件中)允许使用密钥认证。找到以下行并确认它们是这样设置的:

plaintext
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

如果做了更改,记得重启SSH服务:

bash
sudo systemctl restart sshd

步骤 4: 使用SSH密钥登录

现在你应该可以通过SSH密钥无密码登录到localhost了。可以测试一下:

bash
ssh localhost

这时候系统应该不会要求你输入密码,直接登录进入。

示例

我曾经需要在我的开发环境中自动化一些任务,包括从一个服务器到另一个服务器的文件传输。通过上述设置,我能够实现脚本中无密码SSH登录,极大地简化了自动化过程。

这种方法不仅适用于本地环境,也适用于任何远程服务器,只要你有权限编辑远程服务器上的 ~/.ssh/authorized_keys 文件。这种设置在自动部署和管理多台服务器时尤为有用。

2024年8月5日 10:07 回复

你的答案