Linux SSH客户端可通过-i参数临时指定非默认私钥路径,或配置~/.ssh/config实现自动匹配;需确保私钥权限为600、目录权限为700,并在服务端正确部署对应公钥。

Linux 本地 SSH 客户端默认会尝试使用 ~/.ssh/id_rsa、~/.ssh/id_ecdsa 或 ~/.ssh/id_ed25519 这类标准私钥文件登录。但如果你的私钥不在默认路径,或一个账户要管理多个密钥(比如不同服务器用不同密钥),就需要显式指定私钥位置。
用 -i 参数临时指定私钥
这是最常用、最直接的方式,适合单次连接或脚本中明确调用:
- 命令格式:
ssh -i /path/to/your_private_key user@host - 例如:
ssh -i ~/.ssh/myserver_key admin@192.168.5.100 - 注意:私钥文件权限必须是
600(即仅所有者可读写),否则 SSH 会拒绝使用:chmod 600 ~/.ssh/myserver_key
配置 ~/.ssh/config 实现自动匹配
避免每次敲长命令,把主机、用户、私钥等信息写进客户端配置文件,SSH 会自动加载:
- 编辑或创建
~/.ssh/config:nano ~/.ssh/config - 添加如下内容(注意缩进用空格,不能用 Tab):
Host myprod
HostName 192.168.5.100
User admin
IdentityFile ~/.ssh/myserver_key
IdentitiesOnly yes- 保存后,只需运行
ssh myprod,SSH 就会自动用指定私钥连接 -
IdentitiesOnly yes表示只使用配置中明确指定的密钥,不尝试默认密钥,防止干扰
验证私钥是否可用
指定私钥前,建议先确认它能正常解密:
- 检查私钥格式是否合法:
ssh-keygen -l -f ~/.ssh/myserver_key(应输出密钥长度和指纹) - 测试连接是否跳过密码提示:
ssh -i ~/.ssh/myserver_key -o ConnectTimeout=5 admin@192.168.5.100 - 如果仍提示输入密码,可能是私钥本身设置了密码(passphrase),需手动输入;若想免交互,得用
ssh-agent加载
常见问题提醒
指定私钥失败,多数源于权限或路径问题:
- 私钥文件或其所在目录(如
~/.ssh)权限太宽松(比如755),SSH 会拒绝读取 → 改为700(目录)和600(私钥) - 路径写错,尤其是相对路径;推荐用绝对路径(
/home/user/.ssh/key),避免~在某些上下文中未展开 - 服务器端未正确部署对应公钥到
~/.ssh/authorized_keys,或该文件权限不是600











