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 无法登录 |
文件有 Administrators、CodexSandboxUsers 等多个用户权限 |
用 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"

浙公网安备 33010602011771号