熊熊出没 发表于 2024-8-13 14:40:24

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

目录
关于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)。
        https://img-blog.csdnimg.cn/direct/661019f2db644a40b81c89531fe65017.png
       (该图片来源于网上)
        
        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服务)
https://img-blog.csdnimg.cn/direct/96631e29376e4e56a6d0de3effe3de41.jpeg
查看一下有没有装ssh(当然,目前,Linux 的全部发行版几乎都自带 OpenSSH)
dpkg -l | grep ssh  如果没有就用apt安装
sudo apt update sudo apt install openssh-server 我这里显示有装客户端(client--客户端)
https://img-blog.csdnimg.cn/direct/e6b832c84f0f476d9063053dfe7068a9.png
SSH 客户端用于“发送”毗连请求到 SSH 服务器,而 SSH 服务器则“吸收”这些请求,并允许用户通过加密的 SSH 会话远程访问计算机。

Ubuntu安装SSH服务端

1、执行安装指令
sudo apt update sudo apt install openssh-server 中途提示:
   您希望继续执行吗? y
输入y即可
https://img-blog.csdnimg.cn/direct/8308d6e23b0e4e028e3f8971d6250705.png
2、查抄ssh服务器状态:
sudo systemctl status sshd 这会就开启服务了——active(running)就没毛病
https://img-blog.csdnimg.cn/direct/bb55907857fd4cbc8bd5d0e754f4e35e.png
如果一切正常,应该会看到服务正在运行的消息(如上)。如果服务没有自动启动,可以使用以下下令来启动服务:
sudo systemctl start sshd
在Windows上设置SSH

   1、在Windows中安装openssh
在windows设置中
https://img-blog.csdnimg.cn/direct/43715781fbad43c8a299cc8337dee8e5.png
点击应用
    https://img-blog.csdnimg.cn/direct/705f75b3cfe24eb5bc609244dc8d6b21.png
有个“可选功能”
https://img-blog.csdnimg.cn/direct/158da6c0965441a3bfd9f779ee39f087.png
搜索“openssh服务器”(选择客户端还是服务器看个人需求)
https://img-blog.csdnimg.cn/direct/46d4e3230eb24218a5061ef3651c2fba.png
我这里在Ubuntu中的是Client,那在Windows上装server的
2、确保openssh服务已开启
可以win+R打开运行框,输入:services.msc
   services.msc
    https://img-blog.csdnimg.cn/direct/127f89ab206045d79867b965af1372b9.png
找到opensssh,右键点击属性
https://img-blog.csdnimg.cn/direct/0f6a37fa0832454d89042a87e7d5e4de.png
将启动范例修改成自动
https://img-blog.csdnimg.cn/direct/e49bc182ce4e42fc95e94d9f402a59a9.png
修改后成自动开启服务
https://img-blog.csdnimg.cn/direct/fd0d3c53467b49b894e832d49ceb52d6.png
改成自动服务后,但是要进行一次手动开启,之后电脑重启后才会自动开启该服务
3、允许openssh通过防火墙:
搜索“Windows安全中心”,在安全中心中点击“允许应用通过防火墙
https://img-blog.csdnimg.cn/direct/2c9c48ae9b9a4d28ab9a94a140ec9330.png
点击“更改设置”
https://img-blog.csdnimg.cn/direct/af997cb3b30b45cab60002cc3b5a6b97.png
    修改
https://img-blog.csdnimg.cn/direct/ed92938aae464897b1c6de80cfecfa9d.png
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中查看用户名:
echo %USERNAME% https://img-blog.csdnimg.cn/direct/7cd4371ffa2543b59336318bc869a798.png
查看ip
ipconfig https://img-blog.csdnimg.cn/direct/3a21cb99e0bf4e40b14e1ccfbb64c09f.png
就是IPv4后面跟着的ip地点(我这里没有透露我的ip)

好了,可以正式开始建立SSH毗连了。
以是,我们可以在Ubuntu的终端中输入以下格式下令(换成自己的用户名和ip):
   ssh user_name@your_ip
https://img-blog.csdnimg.cn/direct/d771ea5797df461a9ee8793f90d0bf72.png
这个提示是在SSH协议为了掩护我们的毗连,会在你第一次毗连到某个服务器时,显示该服务器的公钥指纹,并要求你确认是否继续毗连。
以是,我们可以输入"yes"
https://img-blog.csdnimg.cn/direct/dd32b2882ea94d829fe95818f01f4f86.png
然后提示说输入你的(暗码(Ubuntu中输入命名不显示点大概星号是正常的)
这个暗码似乎就是你进入Windows系统的暗码,如果忘记了,下面有更改教程
如下,成功!
https://img-blog.csdnimg.cn/direct/4df1ce001dc04bf9a2fe57046ae67755.png
输入exit;可以退出,回到当地:
https://img-blog.csdnimg.cn/direct/dbfb2668039e45be95ad4d1e55c9f1ef.png

(二)密钥认证

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

如果你还没有SSH密钥对,你需要在虚拟机上生成一个。使用ssh-keygen下令来生成一串位数为4096的密钥:
ssh-keygen -t rsa -b 4096 输入这个下令后,一般连续输入enter就行
https://img-blog.csdnimg.cn/direct/acae32d44e9d4f459c326fbfe8d04902.png
这会生成一个公钥(id_rsa.pub)和一个私钥(id_rsa)。私钥应该保持私密,不与任何人共享,而公钥则应该被复制到你想从中进行SSH毗连的其他机器上。
2. 将公钥复制到主机上


[*]在虚拟机上的复制公钥的内容。
        在虚拟机的主目录下,一般是不显示设置文件的:
https://img-blog.csdnimg.cn/direct/02207b6e807943c39f9828867914e946.png
按下Ctrl + H,可以显示隐藏的文件:
https://img-blog.csdnimg.cn/direct/c44be0f48a244cf8a6f5e33ad08d828e.png
.ssh下的id_rsa.pub是公钥的地方
https://img-blog.csdnimg.cn/direct/b473ac7e2b204e42bf8dbfc00d8c821e.png


[*]在Windows上,.ssh下的authorized_keys文件(这个文件如果不存在,就创建一个)。这个文件通常位于C:\Users\username\.ssh\authorized_keys
[*]一串公钥占一行,不能有多余的换行符
https://img-blog.csdnimg.cn/direct/a68075da3835465a835c365040743001.png
之后在Ubuntu中再次尝试ssh毗连。

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

工具——termius

我的建议是,使用一款优秀的工具,就是节省生命。
先容一款SSH工具——termius。
termius下载(Linux版)https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://www.termius.com/free-ssh-client-for-linux
下载后,在termius压缩包界面:
https://img-blog.csdnimg.cn/direct/5f95abf880cc4aefb3d6affc07403a6c.png
使用以下下令安装:
   sudo dpkg -i Termius.deb 
https://img-blog.csdnimg.cn/direct/fa5021f2cf4948748b2ff2ca52f34ae7.png
如上,安装完毕。
点击左下角的系统图标可以找到:
https://img-blog.csdnimg.cn/direct/525c82cf452a484a88d57caa958eb408.png
找到termius后,打开
1. 在Hosts栏中,点击NEW HOST
https://img-blog.csdnimg.cn/direct/cd55c9a08dad40a5ad2bb13b423335b5.png
2. 编辑,输入IP和暗码
https://img-blog.csdnimg.cn/direct/2c0d988213f746bc9570cc9197a74c3a.png
3. 根据提示输入就行
https://img-blog.csdnimg.cn/direct/cffd813e318c4f46b7237d11e2ab40bf.png
4. 成功进入了
https://img-blog.csdnimg.cn/direct/b5bc50b5ad3346b5bedff3c58a2e64b1.png

跨系统传输文件下令


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


[*] username是你的远程用户名        
[*] remote_host是你的远程用户的ip     
例如:
https://img-blog.csdnimg.cn/direct/77613549241b4543a85f8ed3def6900f.png
       如果想将远程电脑上的文件下载到当地,可以使用
   scp username@remote_host:%远程路径  %当地目标路径
        2. 使用SFTP
不外,Windows下令提示符(CMD)或PowerShell自己不直接支持SFTP的get和put下令
   sftp username@remote_host
  其中:


[*] username是你的远程用户名        
[*] remote_host是你的远程用户的ip        
https://img-blog.csdnimg.cn/direct/971553167dda4905afec226f7d6855ff.png
建立sftp请求后,就可以直接使用put方法将文件传输到远程主机上:
语法:
   put %当地路径  %远程目标路径
例如:
https://img-blog.csdnimg.cn/direct/92555fd0942f44ae965063e80d7f9c33.png
从远程到当地使用get方法:
   get  %远程路径  %当地目标路径

题目

忘记暗码

如果忘记了,更改暗码:
1、Win+R打开运行框
https://img-blog.csdnimg.cn/direct/6dbe28c7864944e59b4d43c033939538.png
2、双击进入用户
https://img-blog.csdnimg.cn/direct/a240d84088ca4251ba7e66cad227043d.png
3、选中你要修改的用户右键,我这里是右键“Anastasia”,点击设置暗码
https://img-blog.csdnimg.cn/direct/78ddab03f48a4555bd7efb39a57f86c2.png

SSH大概出现的题目

一般出现题目:

[*]SSH服务未运行:远程主机上的SSH服务大概没有运行或设置不正确。
[*]SSH设置题目:远程主机上的SSH设置大概限定了您的毗连,大概使用了差别的端口、用户认证方式等。
[*]防火墙/安全组题目:远程主机大概有防火墙或安全组规则阻止您的毗连。
[*]SSH密钥题目:如果远程主机设置了公钥认证,并且您没有提供正确的公钥,那么毗连大概会被拒绝。
[*]服务器资源题目:远程服务器大概由于资源不敷(如内存、CPU)或其他系统题目而无法处理毗连。
[*]SSH版本不兼容:您的SSH客户端和远程主机的SSH服务器之间的版本大概存在不兼容题目。
[*]网络题目:您的网络毗连大概不稳定,大概存在网络中断。 一般重要考虑服务是否运行、防火墙、密钥和版本的题目
好比:
https://img-blog.csdnimg.cn/direct/5cd7836347784f79ae27fe032d98784a.png
我这里的题目是:忘记启动服务了,即便改成自动也要先启动服务,下次电脑开机后会自动启动服务

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



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 虚拟机Ubuntu向主机Windows建立SSH毗连,跨系统传输