关于ssh公钥登录问题
公钥登录会绑定用户吗,比如我的ubuntu有多个用户,我使用了ssh公钥登录,那么任何账户都可以免密吗
SSH 公钥登录是绑定到具体用户账户的,不是全系统通用的。
详细来说:
- SSH 服务端在用户的家目录里,查找该用户的
~/.ssh/authorized_keys文件,里面存放允许免密登录的公钥。 - 你用哪个用户名登录,SSH 就检查该用户家目录下的
authorized_keys。 - 如果该用户没有对应的公钥,免密登录就失败,必须密码登录或其它验证方式。
结论:
- 不同用户的
authorized_keys是独立管理的,公钥不会自动对其他用户生效。 - 你需要把公钥分别放到你想允许免密登录的每个用户的
~/.ssh/authorized_keys中。 - 否则,只有那个用户对应的公钥才能免密登录。
举个例子:
假设你有两个用户:alice 和 bob。
- 如果你把公钥放进了
/home/alice/.ssh/authorized_keys,那么只能用ssh alice@host免密登录。 - 直接用
ssh bob@host是不行的,除非也把公钥加到/home/bob/.ssh/authorized_keys。
ssh相关的文件和文件的用处
SSH 相关的文件和它们的作用,主要集中在客户端和服务端的配置与密钥管理上。这里帮你整理一个常见的清单,方便你理解和操作。
1. 客户端相关文件(一般在 ~/.ssh/ 目录)
| 文件名 | 用途说明 |
|---|---|
id_rsa |
默认的 RSA 私钥,用于客户端认证,绝对不能泄露。 |
id_rsa.pub |
对应的 RSA 公钥,上传到服务器 authorized_keys 中。 |
id_ed25519 |
Ed25519 算法的私钥,现代且安全的密钥类型。 |
id_ed25519.pub |
对应的 Ed25519 公钥。 |
known_hosts |
记录客户端曾连接过的服务器公钥,用于防止中间人攻击(host key 验证)。 |
config |
SSH 客户端配置文件,可以配置别名、端口、身份验证文件等,方便连接管理。 |
2. 服务器端相关文件(一般在用户家目录的 ~/.ssh/ 下和全局配置)
用户家目录下(/home/username/.ssh/)
| 文件名 | 用途说明 |
|---|---|
authorized_keys |
允许免密登录的公钥列表,包含所有可登录该用户的公钥。 |
known_hosts |
记录服务器端连接过的客户端公钥(不常用)。 |
全局配置文件(一般路径)
| 文件名 | 用途说明 |
|---|---|
/etc/ssh/sshd_config |
SSH 服务端主配置文件,控制认证方式、端口、允许的用户等。 |
/etc/ssh/ssh_config |
SSH 客户端全局配置文件。 |
/etc/ssh/ssh_host_rsa_key |
服务器自身的 RSA 私钥(用于服务端身份验证),仅服务器可读。 |
/etc/ssh/ssh_host_rsa_key.pub |
服务器自身的 RSA 公钥,用于客户端验证服务器身份。 |
3. 简单工作流程
- 客户端使用私钥(
id_rsa)发起连接。 - 服务器查找对应用户的
~/.ssh/authorized_keys,验证客户端的公钥是否存在。 - 如果匹配成功,免密码登录;否则要求密码或其他认证。

浙公网安备 33010602011771号