如何配置ssh密钥登录 免密码认证设置流程

免密码 ssh 密钥登录的配置方法如下:1. 生成密钥对,使用命令 ssh-keygen -t rsa -b 4096 创建私钥和公钥文件;2. 上传公钥到服务器,可通过 ssh-copy-id 命令或手动将公钥内容写入远程服务器的 ~/.ssh/authorized_keys 文件;3. 可选修改 ssh 服务器配置 /etc/ssh/sshd_config,设置 passwordauthentication no 和 pubkeyauthentication yes,并重启 ssh 服务;4. 测试登录,执行 ssh user@remote_host 验证是否免密登录;5. 若仍需密码,需排查权限问题(~/.ssh 权限为 700,authorized_keys 权限为 600)、公钥内容是否正确、sshd_config 配置是否生效、selinux/apparmor 是否阻止、防火墙是否放行 22 端口及家目录权限是否合规;6. 管理多个密钥可通过 ~/.ssh/config 文件配置 host 别名、hostname、user 和 identityfile 实现自动匹配;7. 安全性保障措施包括设置强 passphrase、保护私钥文件权限为 600、禁用密码登录、使用 ssh 证书、定期更换密钥、采用硬件安全模块 hsm 存储私钥以及限制 ssh 访问来源 ip,从而全面提升 ssh 登录的安全性与便利性。

如何配置ssh密钥登录 免密码认证设置流程

免密码 SSH 密钥登录,简单来说,就是让你不用每次都输入密码就能连接到远程服务器。这不仅方便,而且在一定程度上也更安全。

配置 SSH 密钥登录,其实并不复杂,下面一步步来:

生成密钥对:

首先,在你的本地机器上打开终端,运行以下命令:

ssh-keygen -t rsa -b 4096

这里

-t rsa

指定密钥类型为 RSA,

-b 4096

指定密钥长度为 4096 位。你可以根据自己的需求选择不同的密钥类型和长度。

接下来,会提示你输入保存密钥的文件路径,默认是

~/.ssh/id_rsa

。直接回车使用默认路径即可。

然后,会提示你输入 passphrase(密码短语)。这个 passphrase 是用来加密你的私钥的,如果设置了,每次使用私钥时都需要输入这个 passphrase。为了方便,你可以直接回车跳过,不设置 passphrase。

执行完毕后,会在

~/.ssh

目录下生成两个文件:

id_rsa

(私钥)和

id_rsa.pub

(公钥)。

上传公钥到服务器:

接下来,需要将你的公钥上传到远程服务器。有很多方法可以做到这一点,最简单的方法是使用

ssh-copy-id

命令:

ssh-copy-id user@remote_host

其中

user

是你在远程服务器上的用户名,

remote_host

是远程服务器的 IP 地址或域名。

如果你的本地机器上没有

ssh-copy-id

命令,或者你想手动上传公钥,可以这样做:

首先,将公钥的内容复制到剪贴板:

cat ~/.ssh/id_rsa.pub

然后,通过 SSH 连接到远程服务器:

ssh user@remote_host

登录后,在

~/.ssh

目录下创建一个

authorized_keys

文件(如果该文件不存在):

mkdir -p ~/.sshtouch ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

然后,将你复制的公钥内容粘贴到

authorized_keys

文件中。注意,每个公钥应该占据一行。

文心快码 文心快码

文心快码(Comate)是百度推出的一款AI辅助编程工具

文心快码 35 查看详情 文心快码

修改 SSH 服务器配置(可选):

为了进一步增强安全性,你可以修改 SSH 服务器的配置文件

/etc/ssh/sshd_config

找到以下几行,并修改为:

PasswordAuthentication noPubkeyAuthentication yes

PasswordAuthentication no

禁止使用密码登录,

PubkeyAuthentication yes

允许使用公钥登录。

修改完成后,重启 SSH 服务:

sudo systemctl restart sshd

测试免密码登录

现在,你可以尝试使用 SSH 连接到远程服务器,看看是否需要输入密码了:

ssh user@remote_host

如果一切顺利,你应该可以直接登录到远程服务器,而不需要输入密码。

如果配置后仍然需要密码,如何排查?

配置 SSH 密钥登录后,如果仍然需要输入密码,可能是以下几个原因导致的:

权限问题: 确保

~/.ssh

目录的权限是 700,

~/.ssh/authorized_keys

文件的权限是 600。可以使用

chmod

命令修改权限。公钥内容错误: 检查

authorized_keys

文件中的公钥内容是否正确,是否有多余的空格或换行符。

sshd_config

配置错误: 检查

/etc/ssh/sshd_config

文件中的配置是否正确,特别是

PasswordAuthentication

PubkeyAuthentication

这两行。SELinux 或 AppArmor 阻止: 如果你的系统启用了 SELinux 或 AppArmor,可能会阻止 SSH 使用密钥登录。可以尝试暂时禁用 SELinux 或 AppArmor,看看是否能够解决问题。或者,配置 SELinux 或 AppArmor 允许 SSH 使用密钥登录。防火墙阻止: 确保防火墙允许 SSH 连接。默认情况下,SSH 使用 22 端口。用户家目录权限问题: 用户的家目录权限不正确也会导致密钥认证失败,确保家目录的权限是 755 或 700。

如何管理多个 SSH 密钥?

如果你需要连接到多个远程服务器,并且每个服务器都使用不同的 SSH 密钥,可以使用 SSH 的

config

文件来管理这些密钥。

在你的本地机器上,创建一个

~/.ssh/config

文件(如果该文件不存在)。然后,在

config

文件中添加以下内容:

Host server1  HostName 192.168.1.100  User user1  IdentityFile ~/.ssh/id_rsa_server1Host server2  HostName example.com  User user2  IdentityFile ~/.ssh/id_rsa_server2

其中,

Host

是一个别名,你可以随意命名。

HostName

是远程服务器的 IP 地址或域名。

user

是你在远程服务器上的用户名。

IdentityFile

是私钥文件的路径。

配置完成后,你可以使用别名来连接到远程服务器:

ssh server1ssh server2

这样,SSH 就会自动使用对应的私钥进行认证。

SSH 密钥的安全性如何保障?

SSH 密钥的安全性非常重要,一旦私钥泄露,攻击者就可以轻松地登录到你的远程服务器。为了保障 SSH 密钥的安全性,可以采取以下措施:

使用强密码短语: 在生成密钥对时,设置一个强密码短语,用来加密你的私钥。这样,即使私钥泄露,攻击者也需要知道密码短语才能使用私钥。保护私钥文件: 确保私钥文件的权限是 600,只有你自己才能读取和写入。禁用密码登录: 在 SSH 服务器上禁用密码登录,只允许使用公钥登录。这样,即使攻击者知道了你的用户名和密码,也无法登录到服务器。使用 SSH 证书: SSH 证书是一种更安全的认证方式,可以用来替代传统的 SSH 密钥。定期更换密钥: 定期更换 SSH 密钥,可以降低密钥泄露带来的风险。使用硬件安全模块 (HSM): 将私钥存储在硬件安全模块中,可以提供更高的安全性。HSM 是一种专门用于存储和管理密钥的硬件设备,可以防止私钥被盗取或篡改。限制 SSH 访问来源: 使用防火墙或 TCP Wrappers 等工具,限制 SSH 访问的来源 IP 地址,可以减少攻击面。

这些措施可以有效地提高 SSH 密钥的安全性,保护你的远程服务器免受攻击。选择适合你的安全需求和技术水平的措施,并定期审查和更新你的安全策略。

以上就是如何配置ssh密钥登录 免密码认证设置流程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/438093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 17:17:26
下一篇 2025年11月7日 17:18:24

相关推荐

发表回复

登录后才能评论
关注微信