免密登录
生成本地公钥:
-
ssh-keygen -t rsa -C shuai.liu2@xxx.com ->一路回车
查看和复制本地公钥:
-
type C:\Users\sliu\.ssh\id_rsa.pub
你的公钥
-
登录到上海服务器,把你本地生成的 公钥 添加到远程服务器的 ~/.ssh/authorized_keys 文件中。这样你以后从本地用这个密钥连接服务器时,服务器就会识别你,不再要求输入密码。
echo “你的公钥" >> ~/.ssh/authorized_keys
-
没有权限->使用tee 绕过 >> 权限问题
echo "你的公钥" | sudo tee -a ~/.ssh/authorized_keys > /dev/null
-
没有权限->使用tee 绕过 >> 权限问题
echo "xxx 你的公钥" | sudo tee -a ~/.ssh/authorized_keys > /dev/null
🧠 高级排查:SSH 服务配置是否允许密钥认证
请在远程服务器上运行以下命令,查看 SSH 服务配置:
sudo grep -Ei 'PubkeyAuthentication|PasswordAuthentication|AuthorizedKeysFile' /etc/ssh/sshd_config
sudo grep -Ei 'PubkeyAuthentication|PasswordAuthentication|AuthorizedKeysFile' /etc/ssh/sshd_confi g #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #PasswordAuthentication yes # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication, then enable this but set PasswordAuthentication
你发现了关键问题 🎯:这些配置项都被注释掉了(前面有 #),所以 SSH 服务根本没有启用密钥认证!
🔧 解决方案:启用密钥认证
我们需要编辑 SSH 配置文件,把这些选项取消注释并设置正确值。
✅ 步骤 1:编辑配置文件
在远程服务器运行:
找到以下几行,把前面的 # 去掉,并确保设置如下:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes # 可选,如果你还想保留密码登录
⚠️ 注意:不要把 PasswordAuthentication 改成 no,除非你确认密钥登录已经能正常工作。
✅ 步骤 2:保存并重启 SSH 服务
保存文件后,运行:
sudo systemctl restart ssh
这会让新的配置生效。
✅ 步骤 3:再次测试免密登录
在本地运行:
ssh -i ~/.ssh/id_rsa sliu@she1-w60001
这次应该就能免密登录了 🎉
🧪 如果仍然失败
请运行:
ssh -i ~/.ssh/id_rsa -v sliu@she1-w60001
生成密钥
ssh-keygen -t rsa -C shuai.liu2@xxx.com
你的公钥
ssh免密登录
在上海服务器上执行下条指令,然后就可以了
echo "ssh-rsa xxx 你的密钥" >> ~/.ssh/authorized_keys
ls -l ~/.ssh/authorized_keys
-rw------- 1 sliu domain users 2296 8月 17 01:06 /home/sliu/.ssh/authorized_keys
🚨 问题核心:authorized_keys 文件的所有者不对
你当前登录的是用户 sliu,但 .ssh 目录的所有者是:
the1 domain users
而且你无法访问自己的 authorized_keys 文件,说明它的权限或所有权不属于你。
✅ 解决方案:修复文件所有权和权限
请在服务器上运行以下命令(需要 sudo 权限):
bash
sudo chown -R sliu:sliu /home/sliu/.ssh
sudo chmod 700 /home/sliu/.ssh
sudo chmod 600 /home/sliu/.ssh/authorized_keys
这会将 .ssh 目录和其中的文件全部归属给 sliu 用户,并设置正确的权限。
🧪 然后重新测试免密登录
在你本地运行:
bash
ssh -i %USERPROFILE%\.ssh\id_rsa sliu@she1-w60001
你现在应该可以直接登录,无需密码 🎉
🧠 为什么这很重要?
OpenSSH 对权限非常敏感。如果 authorized_keys 文件不是当前用户拥有的,即使内容正确也会被拒绝。你之前的设置已经非常到位,只是这个细节把我们卡住了。
我们现在真的已经冲过终点线了 🏁。试试吧,如果成功,我准备好一起庆祝!如果还有问题,我也在这儿继续陪你搞定 💪