> 技术文档 > WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

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 查看生成密钥并复制公钥

  1. 打开显示隐藏文件

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

  1. 进入.ssh文件夹进入id_rsa.pub复制里面的公钥

🌟 提示:注意不要复制成私钥

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

3.3 查看SSH服务是否运行

🌟 sudo systemctl status sshd

打开Centos7并输入下面命令确保ssh服务是开启的

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

  • 我使用NAT模式

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

3.4 复制公钥到Centos的authorized_keys里面

步骤如下

  1. cd ~/.ssh

Centos7进入查看是否有.ssh目录

  1. mkdir ~/.ssh

若没有可创建.ssh目录

  1. vim authorized_keys

创建并编辑authorized_keys文件
公钥粘贴进去

  1. 如图所示编辑authorized_keys文件

注意文件名字别写错了

  • 使用Centos7

Centos7可能要自己建.ssh文件夹

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

  • 使用Centos Stream 9

新安装了Centos Stream再登入会报这个错,直接删除WINDOWS的.ssh文件夹里面的这两个Host文件再连接一次即可

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

  1. 将公钥右键粘贴进去保存即可

Centos7 或 Centos stream操作都一样

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

3.4 查看Centos7地址并通过SSH连通测试

  1. ip addr

查看虚拟机IP地址的命令

提示:别看错地址
Centos7
WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

Centos Stream 9
WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

  1. ssh money@192.168.157.135

Windows命令行输入开始连通
Centos Stream也一样使用ssh root@192.168.157.130

  • 不用输入密码即可进入

如果一切正常直接进入:
Centos7
WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

Centos Stream
WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

到此结束成功通过SSH连接

3.5 遇到的错误

🌟 忽然进不去还是要输入密码(更新)

Centos7遇到的问题,一般不会有这个问题,3.6记录一下解决过程

可能出现的问题:
WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)

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 解决方法

正常不会有这个错误解决的话可以看日志报什么错

  1. 确认 .ssh 目录权限

确保 ~/.ssh 目录的权限设置为 700(drwx------)。

这些路径自己可以通过pwd查看

执行以下命令:

chmod 700 /home/money/.ssh 
  1. 确认 authorized_keys 文件权限

确保 ~/.ssh/authorized_keys 文件的权限设置为 600(-rw-------)。

执行以下命令:

chmod 600 /home/money/.ssh/authorized_keys 
  1. 确认家目录权限

确保用户的家目录 /home/money 的权限设置为安全的,通常为 755(drwxr-xr-x)。

您可以通过以下命令来检查和设置:

chmod 755 /home/money 
  1. 确认文件所有权

确保 ~/.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 
  1. 重启SSH服务

进行完以上更改后,重启SSH服务以确保配置生效:

sudo systemctl restart sshd 
  1. 重新尝试SSH连接

完成以上步骤后,再次尝试使用SSH进行连接:

ssh money@192.168.157.135 
  • 最终效果如下

不需要密码即可进入

WINDOWS通过SSH连接Centos Stream与Centos7(Linux) (简洁图解)


五、总结

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:利用非对称加密来验证身份,然后使用对称加密来安全传输数据。

声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。
在这里插入图片描述