虚拟机Ubuntu向主机Windows建立SSH毗连,跨系统传输

打印 上一主题 下一主题

主题 687|帖子 687|积分 2061

目录
关于SSH
SSH的诞生
SSH起源与发展
SSH常用认证方法
SSH设置
Ubuntu下
Ubuntu安装SSH服务端
在Windows上设置SSH
在Ubuntu中建立SSH毗连
(一)暗码认证
(二)密钥认证
1. 在虚拟机上生成SSH密钥对
工具——terminus
跨系统传输文件下令
题目
忘记暗码
SSH大概出现的题目

        1. 简单先容了SSH的来源与发展。
        2. 在SSH设置中,重要展示了暗码认证。如果设置出现不可预估的错误大概想要方便快捷,可以考虑使用SSH工具——termius。
        3. 先容了两个跨系统传输文件的下令。

关于SSH

SSH的诞生

        在SSH诞生之前,网络主机之间的通信广泛采用明文通信方式,任何位于传输路径上的设备都可以读取这些数据。
        尤其在远程登录和网络服务领域。远程登录和网络服务通常使用如rlogin、TELNET、FTP和rsh等协议。这些协议在传输数据时并不加密,特殊是服务器登录过程,用户输入的暗码需要在网络上明文传输到服务器,使得数据容易受到嗅探和窜改等攻击。
        芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 地点的大学网络一直发生暗码嗅探攻击,因此他想为服务器计划一个更安全的登录方式。1995年,他计划了 SSH 协议的第一个版本(现称为 SSH 1),同时写出了第一个实现(称为 SSH1)。
        

       (该图片来源于网上)
        
        SSH (Secure Shell)协议是一种安全远程登录服务器的协议。它通过密钥交换机制(如Diffie-Hellman密钥交换)计算一个共享密钥,并基于这个密钥建立一个与服务器通信的安全通道。用户通过安全通道使用一种可担当的身份验证方法进行身份验证。常用的认证方法包括“暗码”和“公钥”。顾名思义,如果是“暗码”方式,要求用户提供自己的暗码即可进行认证。而“publickey”验证则依靠于用户持有的私钥和服务器上的公钥进行身份验证。公钥验证通常被以为更安全,由于它不依靠于在网络上传输暗码,减少了暗码被截获的风险。

SSH起源与发展

       当时, SSH 1的发布迅速得到了广泛的认可和使用。由于其加密和身份验证功能,SSH 1能够更换那些不安全的远程登录和网络服务协议,如rlogin、TELNET、FTP和rsh等。到1995年底,SSH的用户已经遍布50个国家,到达了20,000个。然而,随着SSH的遍及和使用,人们开始发现SSH 1协议中存在一些安全漏洞。这些漏洞促进了SSH 2的诞生。
        为了修复SSH 1中的安全漏洞并提供更强盛的功能,Tatu Ylönen在1996年提出了SSH 2协议(或称为SSH 2.0)。SSH 2与SSH 1并不兼容,但在安全性、功能性和性能方面都进行了改进。SSH 2协议在1997年进行了标准化,并在1998年推出了软件实现SSH 2。此后,SSH重要有两个版本——SSH 1和SSH 2。不外,那时官方的SSH 2软件是一个专有软件,需要付费使用,并且没有提供SSH  1的一些功能。限定了SSH 2的遍及和使用。
        1999年,OpenBSD 的开辟人员决定写一个 SSH 2 协议的开源实现,这就是 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本,那是当时 SSH1 最后一个开源版本。但是,OpenSSH 很快就完全摆脱了原始的官方代码,在许多开辟者的加入下,按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供,以后又移植到其他操纵系统,成为最流行的 SSH 实现。
        目前,Linux 的全部发行版几乎都自带 OpenSSH。
        到2024年6月29,根据互联网扫描服务shodan报告,在网络空间中发现了超3000万个基于SSH的活泼服务。(可以到shodan官网康康)


SSH常用认证方法

SSH(Secure Shell)提供了几种差别的认证方式,其中最常见的是暗码认证和密钥认证。

  • 暗码认证

    • 原理:用户在毗连时输入用户名和暗码,暗码会被传输到远程服务器进行验证。如果暗码正确,用户将被授权访问远程服务器。
    • 优点:暗码认证是最简单直接的认证方式,用户只需记着暗码即可。
    • 缺点:暗码在网络中传输,大概面临被嗅探的风险,且容易受到中间人攻击或暴力破解攻击,尤其是针对弱暗码。

  • 密钥认证

    • 原理:用户生成一对密钥,包括公钥和私钥。公钥存储在服务器上的授权文件中,而私钥则生存在用户的当地计算机上。当用户尝试毗连时,服务器会要求提供与公钥匹配的私钥进行验证。
    • 优点:相比暗码认证,密钥认证更加安全,由于私钥不会在网络上传输,降低了安全风险。
    • 缺点:用户需要生成密钥对,并在首次毗连时将公钥上传到服务器,这大概需要额外的设置步骤。

除了上述两种重要认证方式外,SSH还支持其他认证机制,如使用单一登录(SSO)系统、基于硬件的令牌或多因素认证等,这些方式通常用于增强安全性,但在一样平常使用中不如暗码认证和密钥认证广泛。

SSH设置

Ubuntu下

默认情况下,ssh服务不开启(用“sudo systemctl status sshd”查看ssh服务)

查看一下有没有装ssh(当然,目前,Linux 的全部发行版几乎都自带 OpenSSH)
  1. dpkg -l | grep ssh
复制代码
 如果没有就用apt安装
  1. sudo apt update sudo apt install openssh-server
复制代码
我这里显示有装客户端(client--客户端)

SSH 客户端用于“发送”毗连请求到 SSH 服务器,而 SSH 服务器则“吸收”这些请求,并允许用户通过加密的 SSH 会话远程访问计算机。

Ubuntu安装SSH服务端

1、执行安装指令
  1. sudo apt update sudo apt install openssh-server
复制代码
中途提示:
   您希望继续执行吗? [Y/n] y
  输入y即可

2、查抄ssh服务器状态:
  1. sudo systemctl status sshd
复制代码
这会就开启服务了——active(running)就没毛病

如果一切正常,应该会看到服务正在运行的消息(如上)。如果服务没有自动启动,可以使用以下下令来启动服务:
  1. sudo systemctl start sshd
复制代码

在Windows上设置SSH

   1、在Windows中安装openssh
  在windows设置中
  

  点击应用
   

  有个“可选功能”
  

  搜索“openssh服务器”(选择客户端还是服务器看个人需求)
  

  我这里在Ubuntu中的是Client,那在Windows上装server的
  2、确保openssh服务已开启
  可以win+R打开运行框,输入:services.msc
     services.msc
   

  找到opensssh,右键点击属性
  

  将启动范例修改成自动
  

  修改后成自动开启服务
  

  改成自动服务后,但是要进行一次手动开启,之后电脑重启后才会自动开启该服务
  3、允许openssh通过防火墙:
  搜索“Windows安全中心”,在安全中心中点击“允许应用通过防火墙
  

  点击“更改设置”
  

    修改
  

  openssh服务器的设置文件通常位于:C:\ProgramData\ssh\sshd_config,视具体情况决定要不要修改。

在Ubuntu中建立SSH毗连

(一)暗码认证

首先需要知道下令格式。
   ssh user_name@your_ip
  1、user_name 你要毗连的用户名
2、 your_ip 你要毗连的设备的ip地点
好比这里我要毗连的是我的Windows主机,那我就需要知道Windows的用户名(user_name)和ip(your_ip)
可以在Windows的cmd中查看用户名:
  1. echo %USERNAME%
复制代码

查看ip
  1. ipconfig
复制代码

就是IPv4后面跟着的ip地点(我这里没有透露我的ip)

好了,可以正式开始建立SSH毗连了。
以是,我们可以在Ubuntu的终端中输入以下格式下令(换成自己的用户名和ip):
   ssh user_name@your_ip
  

这个提示是在SSH协议为了掩护我们的毗连,会在你第一次毗连到某个服务器时,显示该服务器的公钥指纹,并要求你确认是否继续毗连。
以是,我们可以输入"yes"

然后提示说输入你的(暗码(Ubuntu中输入命名不显示点大概星号是正常的)
这个暗码似乎就是你进入Windows系统的暗码,如果忘记了,下面有更改教程
如下,成功!

输入exit;可以退出,回到当地:


(二)密钥认证

1. 在虚拟机上生成SSH密钥对

如果你还没有SSH密钥对,你需要在虚拟机上生成一个。使用ssh-keygen下令来生成一串位数为4096的密钥:
  1. ssh-keygen -t rsa -b 4096
复制代码
输入这个下令后,一般连续输入enter就行

这会生成一个公钥(id_rsa.pub)和一个私钥(id_rsa)。私钥应该保持私密,不与任何人共享,而公钥则应该被复制到你想从中进行SSH毗连的其他机器上。
2. 将公钥复制到主机上


  • 在虚拟机上的复制公钥的内容。
        在虚拟机的主目录下,一般是不显示设置文件的:

按下Ctrl + H,可以显示隐藏的文件:

.ssh下的id_rsa.pub是公钥的地方



  • 在Windows上,.ssh下的authorized_keys文件(这个文件如果不存在,就创建一个)。这个文件通常位于C:\Users\username\.ssh\authorized_keys
  • 一串公钥占一行,不能有多余的换行符

之后在Ubuntu中再次尝试ssh毗连。

在进行毗连的时候,大概会由于设置文件的题目出现错误,我的建议是,使用工具,节省生命。

工具——termius

我的建议是,使用一款优秀的工具,就是节省生命。
先容一款SSH工具——termius。
termius下载(Linux版)
https://www.termius.com/free-ssh-client-for-linux
下载后,在termius压缩包界面:

使用以下下令安装:
   sudo dpkg -i Termius.deb 
  

如上,安装完毕。
点击左下角的系统图标可以找到:

找到termius后,打开
1. 在Hosts栏中,点击NEW HOST

2. 编辑,输入IP和暗码

3. 根据提示输入就行

4. 成功进入了


跨系统传输文件下令


  • 使用scp下令
下令格式:
   scp  %当地路径  username@remote_host:%远程目标路径
  其中:


  •  username是你的远程用户名        
  •  remote_host是你的远程用户的ip     
例如:

       如果想将远程电脑上的文件下载到当地,可以使用
   scp username@remote_host:%远程路径  %当地目标路径
          2. 使用SFTP
不外,Windows下令提示符(CMD)或PowerShell自己不直接支持SFTP的get和put下令
   sftp username@remote_host
    其中:


  •  username是你的远程用户名        
  •  remote_host是你的远程用户的ip        

建立sftp请求后,就可以直接使用put方法将文件传输到远程主机上
语法:
   put %当地路径  %远程目标路径
  例如:

从远程到当地使用get方法:
   get  %远程路径  %当地目标路径
  
题目

忘记暗码

如果忘记了,更改暗码:
1、Win+R打开运行框

2、双击进入用户

3、选中你要修改的用户右键,我这里是右键“Anastasia”,点击设置暗码


SSH大概出现的题目

一般出现题目:

  • SSH服务未运行:远程主机上的SSH服务大概没有运行或设置不正确。
  • SSH设置题目:远程主机上的SSH设置大概限定了您的毗连,大概使用了差别的端口、用户认证方式等。
  • 防火墙/安全组题目:远程主机大概有防火墙或安全组规则阻止您的毗连。
  • SSH密钥题目:如果远程主机设置了公钥认证,并且您没有提供正确的公钥,那么毗连大概会被拒绝。
  • 服务器资源题目:远程服务器大概由于资源不敷(如内存、CPU)或其他系统题目而无法处理毗连。
  • SSH版本不兼容:您的SSH客户端和远程主机的SSH服务器之间的版本大概存在不兼容题目。
  • 网络题目:您的网络毗连大概不稳定,大概存在网络中断。 一般重要考虑服务是否运行、防火墙、密钥和版本的题目
好比:

我这里的题目是:忘记启动服务了,即便改成自动也要先启动服务,下次电脑开机后会自动启动服务

参考资料:
DNS中SSH主机密钥指纹验证记录的大规模分析
安全掩护(SSH):基于超文本传输协议(HTTP)的公钥身份验证



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表