Linux SSH 使用深度解析(Key 登录详解)

1. SSH 简介
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录和传输数据,SSH 提供了多种认证方式,其中最常见的是密码认证和基于密钥的认证。
2. 基于 Key 登录的优势
安全性高:基于密钥的认证比密码认证更加安全,因为私钥通常保存在本地且不易泄露。
方便性:一旦设置完成,用户无需每次输入密码即可进行 SSH 连接。
3. 生成 SSH 密钥对
在客户端机器上生成一对公钥和私钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa 指定使用 RSA 算法。
-b 4096 指定密钥长度为 4096 位。
-C 选项添加注释信息,便于识别。
该命令会在~/.ssh 目录下生成id_rsa(私钥)和id_rsa.pub(公钥)文件。
4. 将公钥复制到服务器

将生成的公钥复制到目标服务器上的~/.ssh/authorized_keys 文件中:
ssh-copy-id user@server_ip
或者手动复制:
cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
确保服务器上的~/.ssh 目录权限正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
5. 配置 SSH 客户端使用 Key 登录
编辑客户端的 SSH 配置文件(~/.ssh/config),添加以下内容:
Host server_alias
HostName server_ip_or_hostname
User your_username
IdentityFile ~/.ssh/id_rsa
这样可以通过server_alias 来简化连接命令。
6. 连接到服务器
使用以下命令连接到服务器:
ssh server_alias
如果一切配置正确,将不需要输入密码即可登录。
相关问题与解答
Q1: 如何检查 SSH 密钥对是否已成功添加到服务器?
A1: 你可以使用以下命令查看服务器上的authorized_keys 文件内容:

ssh user@server_ip "cat ~/.ssh/authorized_keys"
确认你的公钥已经存在于该文件中。
Q2: SSH 密钥登录仍然提示输入密码,可能的原因有哪些?
A2: 可能的原因包括:
公钥未正确添加到服务器的~/.ssh/authorized_keys 文件中。
服务器上的~/.ssh 目录或authorized_keys 文件权限不正确。
使用的密钥文件路径错误,请检查~/.ssh/config 中的IdentityFile 配置项。
确保 SSH 客户端使用的是正确的密钥文件。
通过以上步骤,你应该能够成功配置并使用基于密钥的 SSH 登录,提高远程连接的安全性和便捷性。
小伙伴们,上文介绍了“linux ssh 使用深度解析(key登录详解)”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。