linux ssh key

SSH 密钥登录配置记录

服务器信息

  • 地址:wow2.x3322.net
  • 用户:root

概念

SSH 密钥登录需要一对密钥

名称 存放位置 说明
私钥 本地电脑 证明身份,必须保密
公钥 服务器 ~/.ssh/authorized_keys 验证私钥

操作步骤

1. 在 Windows 上生成密钥对

ssh-keygen -t rsa -b 4096 -C "wow2.x3322.net"

参数说明:

  • -t rsa:密钥类型,rsa 兼容性最广,ed25519 更优
  • -b 4096:密钥位数
  • -C:注释,方便辨识(注意大写 C

生成后得到两个文件:

  • wowx3322net → 私钥
  • wowx3322net.pub → 公钥

2. 将公钥上传到服务器

type wowx3322net.pub | ssh root@wow2.x3322.net "cat >> ~/.ssh/authorized_keys"

如果 CMD 报语法错误,改用 PowerShell 执行。

3. 服务器上设置权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. Windows 上修复私钥权限 ⚠️ 关键步骤

SSH 要求私钥文件只能你自己访问,否则会拒绝使用。

先查看当前权限:

icacls wowx3322net

清除多余权限,只保留自己:

icacls wowx3322net /reset
icacls wowx3322net /inheritance:r
icacls wowx3322net /grant:r "%USERNAME%:R"

5. 使用私钥登录

ssh -i wowx3322net root@wow2.x3322.net

踩坑记录

问题 原因 解决
Too many arguments -c 小写了,应该是 -C 改成大写
文件存成了 y 提示输入路径时输入了 y,被当成文件名 重命名为正确名称
权限 too open 无法登录 文件有 AdministratorsCodexSandboxUsers 等多个用户权限 icacls 清除多余权限
移到 .ssh 目录后仍报权限错误 继承的权限跟着文件一起移过去了 再次执行 icacls 修复

核心教训

SSH 密钥登录失败,90% 是权限问题——密钥文件只能你自己读,其他人碰都不能碰。

一直以来 没有收藏 ssh登录的最基本公钥和私钥的基本讲解和收录

  ssh-keygen -t rsa -c "stweily"

注意 -C 的注释内容的-C C一定大写, -t 类型 rsa比较老常见,推荐ed25519

之后就开始 输入啥在的命名(到时会生成公钥 xxx.pub 和私钥 xxx)

  Enter file in which to save the key

然后就是密码(默认回车两次-或重复两次密码)

  Enter passphrase

之后就在你当前命令行目录下生成了相应的两个密钥文件.
然后说使用
方案1

type wowx3322net.pub | ssh root@wow2.x3322.net "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

后面输入密码就把公钥写到了远程服务器上面去了.
最后登录

ssh -i wowx3322net root@wow2.x3322.net

如果还需要密码.证明不对 可以用 查看原因

ssh -vvv -i wowx3322net -o PreferredAuthentications=publickey root@wow2.x3322.net

有时候你的私钥权限太宽松,会出现被拒绝,

icacls C:\Users\huangw\.ssh\wowx3322net /reset
icacls C:\Users\huangw\.ssh\wowx3322net /inheritance:r
icacls C:\Users\huangw\.ssh\wowx3322net /grant:r "XX公司\stweily:R"
posted @ 2026-08-05 09:53  stweily  阅读(4)  评论(0)    收藏  举报