WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)
Java系列文章目录
补充内容 Windows通过SSH连接Linux
第一章 Linux基本命令的学习与Linux历史
文章目录
- Java系列文章目录
- 一、前言
- 二、学习目的
- 三、问题描述
- 四、解决方案:
-
- 3.1 生成公钥私钥
- 3.2 查看生成密钥并复制公钥
- 3.3 查看SSH服务是否运行
- 3.4 复制公钥到Centos的authorized_keys里面
- 3.4 查看Centos7地址并通过SSH连通测试
- 3.5 遇到的错误
- 3.6 针对3.5的错误修改
-
- 3.6.1 首先查看SSH日志
- 3.6.2 解决方法
- 五、总结
-
- 5.1 总结步骤
- 5.2 总结方法
- 5.3 学习总结
一、前言
- 本文已于24年9月5日更新修复错误同时优化页面并保持原先正确步骤情况下补充文章错误的解决方法
- 本文于24年9月10日添加新版本Centos Stream 9的使用
不想看每步做什么的可以直接看总结里的步骤
二、学习目的
- Windows通过SSH连接VMware里的Centos7
- 学习SSH与密钥
三、问题描述
- 学习过程中SSH连接Centos7网络上一些解决方法比较混乱且有重复文章
- SSH超时问题
Connection timed out
- 按步骤走完设置好公私钥后还是只能通过密码进入无法通过SSH连接(修改)
四、解决方案:
3.1 生成公钥私钥
🌟 ssh-keygen -t rsa -C \"邮箱\"
输入命令后会提示选择文件来保存密钥按 Enter 键接受默认位置
(~/.ssh/id_rsa)
直接按 Enter 以不使用密码短语。
-
-t rsa:指定要生成的密钥类型为 RSA。
-
-C “你的邮箱@example.com”:为生成的密钥添加一个注释通常是你的邮箱。
3.2 查看生成密钥并复制公钥
- 打开显示隐藏文件
- 进入.ssh文件夹进入id_rsa.pub复制里面的公钥
🌟 提示:注意不要复制成私钥
3.3 查看SSH服务是否运行
🌟 sudo systemctl status sshd
打开Centos7并输入下面命令确保ssh服务是开启的
- 我使用NAT模式
3.4 复制公钥到Centos的authorized_keys里面
步骤如下
cd ~/.ssh
Centos7进入查看是否有.ssh目录
mkdir ~/.ssh
若没有可创建.ssh目录
vim authorized_keys
创建并编辑authorized_keys文件
将公钥粘贴进去
- 如图所示编辑
authorized_keys
文件
注意文件名字别写错了
- 使用
Centos7
:
Centos7可能要自己建
.ssh
文件夹
- 使用
Centos Stream 9
:
新安装了Centos Stream再登入会报这个错,直接删除WINDOWS的
.ssh
文件夹里面的这两个Host文件再连接一次即可
- 将公钥右键粘贴进去保存即可
Centos7 或 Centos stream操作都一样
3.4 查看Centos7地址并通过SSH连通测试
ip addr
查看虚拟机IP地址的命令
提示:别看错地址
Centos7
:
Centos Stream 9
:
ssh money@192.168.157.135
Windows命令行输入开始连通
Centos Stream也一样使用ssh root@192.168.157.130
- 不用输入密码即可进入
如果一切正常直接进入:
Centos7
:
Centos Stream
:
到此结束成功通过SSH连接
3.5 遇到的错误
🌟 忽然进不去还是要输入密码(更新)
Centos7
遇到的问题,一般不会有这个问题,3.6记录一下解决过程
可能出现的问题:
3.6 针对3.5的错误修改
3.6.1 首先查看SSH日志
🌟 sudo journalctl -u sshd
运行此命令
日志如下:
-- Logs begin at 四 2024-09-05 21:17:53 CST, end at 四 2024-09-05 21:38:47 CST. --9月 05 21:18:08 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...9月 05 21:18:08 localhost.localdomain sshd[1111]: Server listening on 0.0.0.0 port 22.9月 05 21:18:08 localhost.localdomain sshd[1111]: Server listening on :: port 22.9月 05 21:18:08 localhost.localdomain systemd[1]: Started OpenSSH server daemon.9月 05 21:20:07 localhost.localdomain sshd[2861]: Authentication refused: bad ownership or modes for file /home/money/.ssh/authoriz9月 05 21:20:12 localhost.localdomain sshd[2861]: Accepted password for money from 192.168.157.1 port 55798 ssh29月 05 21:20:18 localhost.localdomain sshd[2961]: Authentication refused: bad ownership or modes for file /home/money/.ssh/authoriz9月 05 21:28:13 localhost.localdomain sshd[3118]: Authentication refused: bad ownership or modes for file /home/money/.ssh/authoriz9月 05 21:34:47 localhost.localdomain sshd[3242]: Authentication refused: bad ownership or modes for file /home/money/.ssh/authoriz9月 05 21:35:36 localhost.localdomain sshd[3242]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=9月 05 21:35:38 localhost.localdomain sshd[3242]: Failed password for money from 192.168.157.1 port 55994 ssh29月 05 21:35:42 localhost.localdomain sshd[3242]: Accepted password for money from 192.168.157.1 port 55994 ssh29月 05 21:38:04 localhost.localdomain sshd[3333]: Authentication refused: bad ownership or modes for file /home/money/.ssh/authoriz~~~~
- 可以看到 “
Authentication refused: bad ownership or modes for file /home/money/.ssh/authorized_keys
” 的错误信息。这是导致SSH公钥认证失败的关键提示。 - 这个错误通常表示
/home/money/.ssh/authorized_keys
文件或其父目录的⭐️权限设置不正确,导致SSH无法读取该文件。
3.6.2 解决方法
正常不会有这个错误解决的话可以看日志报什么错
- 确认
.ssh
目录权限
确保
~/.ssh
目录的权限设置为 700(drwx------)。
这些路径自己可以通过pwd查看
执行以下命令:
chmod 700 /home/money/.ssh
- 确认
authorized_keys
文件权限
确保
~/.ssh/authorized_keys
文件的权限设置为 600(-rw-------)。
执行以下命令:
chmod 600 /home/money/.ssh/authorized_keys
- 确认家目录权限
确保用户的家目录
/home/money
的权限设置为安全的,通常为 755(drwxr-xr-x)。
您可以通过以下命令来检查和设置:
chmod 755 /home/money
- 确认文件所有权
确保
~/.ssh
目录及其中的所有文件归用户 money 所有。
可以使用以下命令进行检查:
ls -ld /home/money ls -ld /home/money/.ssh ls -l /home/money/.ssh/authorized_keys
如果所有权不正确,您可以通过以下命令更改:
chown money:money /home/money chown money:money /home/money/.ssh chown money:money /home/money/.ssh/authorized_keys
- 重启SSH服务
进行完以上更改后,重启SSH服务以确保配置生效:
sudo systemctl restart sshd
- 重新尝试SSH连接
完成以上步骤后,再次尝试使用SSH进行连接:
ssh money@192.168.157.135
- 最终效果如下
不需要密码即可进入
五、总结
5.1 总结步骤
如果遇到问题上面每一步都有介绍
Windows生成密钥并复制公钥
- ssh-keygen -t rsa -C “邮箱”
确认ssh状态并在Centos7里面建authorized_keys文件里粘贴公钥
- sudo systemctl status sshd
- mkdir ~/.ssh
- vim authorized_keys
- 粘贴公钥
Centos7设置权限(
略过
)
🌟 我遇到的问题通过日志查询是权限问题,一般不会有这个错误,这一步可以略过不执行
chmod 700 /home/money/.ssh chmod 600 /home/money/.ssh/authorized_keys chmod 755 /home/money sudo systemctl restart sshd
关闭防火墙
systemctl stop firewalld
SSH连接
- ip addr
- ssh money@192.168.157.135(改成自己的)
5.2 总结方法
虚拟机刚开有时候可能会连接超时等一下或者重启就行
- 确保两台机要ping通
- 确保防火墙不会拦截
- 确保复制进CEntos7的是公钥
- 确保虚拟机地址不要看错
5.3 学习总结
- 对称加密:用同一把钥匙加密和解密,速度快,但密钥分发有风险。
- 非对称加密:用一对钥匙(公钥和私钥),可以安全地传输公钥,提升安全性,但速度慢。
- SSH:利用非对称加密来验证身份,然后使用对称加密来安全传输数据。
声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。