赞
踩
目录
1. 简单介绍了SSH的来源与发展。
2. 在SSH配置中,主要展示了密码认证。如果配置出现不可预估的错误或者想要方便快捷,可以考虑使用SSH工具——termius。
3. 介绍了两个跨系统传输文件的命令。
在SSH诞生之前,网络主机之间的通信普遍采用明文通信方式,任何位于传输路径上的设备都可以读取这些数据。
尤其在远程登录和网络服务领域。远程登录和网络服务通常使用如rlogin、TELNET、FTP和rsh等协议。这些协议在传输数据时并不加密,特别是服务器登录过程,用户输入的密码需要在网络上明文传输到服务器,使得数据容易受到嗅探和篡改等攻击。
芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 所在的大学网络一直发生密码嗅探攻击,因此他想为服务器设计一个更安全的登录方式。1995年,他设计了 SSH 协议的第一个版本(现称为 SSH 1),同时写出了第一个实现(称为 SSH1)。
(该图片来源于网上)
SSH (Secure Shell)协议是一种安全远程登录服务器的协议。它通过密钥交换机制(如Diffie-Hellman密钥交换)计算一个共享密钥,并基于这个密钥建立一个与服务器通信的安全通道。用户通过安全通道使用一种可接受的身份验证方法进行身份验证。常用的认证方法包括“密码”和“公钥”。顾名思义,如果是“密码”方式,要求用户提供自己的密码即可进行认证。而“publickey”验证则依赖于用户持有的私钥和服务器上的公钥进行身份验证。公钥验证通常被认为更安全,因为它不依赖于在网络上传输密码,减少了密码被截获的风险。
当时, 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(Secure Shell)提供了几种不同的认证方式,其中最常见的是密码认证和密钥认证。
除了上述两种主要认证方式外,SSH还支持其他认证机制,如使用单一登录(SSO)系统、基于硬件的令牌或多因素认证等,这些方式通常用于增强安全性,但在日常使用中不如密码认证和密钥认证普遍。
默认情况下,ssh服务不开启(用“sudo systemctl status sshd”查看ssh服务)
查看一下有没有装ssh(当然,目前,Linux 的所有发行版几乎都自带 OpenSSH)
dpkg -l | grep ssh
如果没有就用apt安装
sudo apt update sudo apt install openssh-server
我这里显示有装客户端(client--客户端)
SSH 客户端用于“发送”连接请求到 SSH 服务器,而 SSH 服务器则“接收”这些请求,并允许用户通过加密的 SSH 会话远程访问计算机。
1、执行安装指令
sudo apt update sudo apt install openssh-server
中途提示:
您希望继续执行吗? [Y/n] y
输入y即可
2、检查ssh服务器状态:
sudo systemctl status sshd
这会就开启服务了——active(running)就没毛病
如果一切正常,应该会看到服务正在运行的消息(如上)。如果服务没有自动启动,可以使用以下命令来启动服务:
sudo systemctl start sshd
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,视具体情况决定要不要修改。
首先需要知道命令格式。
ssh user_name@your_ip
1、user_name 你要连接的用户名
2、 your_ip 你要连接的设备的ip地址
比如这里我要连接的是我的Windows主机,那我就需要知道Windows的用户名(user_name)和ip(your_ip)
可以在Windows的cmd中查看用户名:
echo %USERNAME%
查看ip
ipconfig
就是IPv4后面跟着的ip地址(我这里没有透露我的ip)
好了,可以正式开始建立SSH连接了。
所以,我们可以在Ubuntu的终端中输入以下格式命令(换成自己的用户名和ip):
ssh user_name@your_ip
这个提示是在SSH协议为了保护我们的连接,会在你第一次连接到某个服务器时,显示该服务器的公钥指纹,并要求你确认是否继续连接。
所以,我们可以输入"yes"
然后提示说输入你的(密码(Ubuntu中输入命名不显示点或者星号是正常的)
这个密码似乎就是你进入Windows系统的密码,如果忘记了,下面有更改教程
如下,成功!
输入exit;可以退出,回到本地:
如果你还没有SSH密钥对,你需要在虚拟机上生成一个。使用ssh-keygen
命令来生成一串位数为4096的密钥:
ssh-keygen -t rsa -b 4096
输入这个命令后,一般连续输入enter就行
这会生成一个公钥(id_rsa.pub
)和一个私钥(id_rsa
)。私钥应该保持私密,不与任何人共享,而公钥则应该被复制到你想从中进行SSH连接的其他机器上。
2. 将公钥复制到主机上
在虚拟机的主目录下,一般是不显示配置文件的:
按下Ctrl + H,可以显示隐藏的文件:
.ssh下的id_rsa.pub是公钥的地方
之后在Ubuntu中再次尝试ssh连接。
在进行连接的时候,可能会因为配置文件的问题出现错误,我的建议是,使用工具,节省生命。
我的建议是,使用一款优秀的工具,就是节省生命。
介绍一款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 %本地路径 username@remote_host:%远程目标路径
其中:
例如:
如果想将远程电脑上的文件下载到本地,可以使用
scp username@remote_host:%远程路径 %本地目标路径
2. 使用SFTP
不过,Windows命令提示符(CMD)或PowerShell本身不直接支持SFTP的get
和put
命令
sftp username@remote_host
其中:
建立sftp请求后,就可以直接使用put方法将文件传输到远程主机上:
语法:
put %本地路径 %远程目标路径
例如:
从远程到本地使用get方法:
get %远程路径 %本地目标路径
如果忘记了,更改密码:
1、Win+R打开运行框
2、双击进入用户
3、选中你要修改的用户右键,我这里是右键“Anastasia”,点击设置密码
一般出现问题:
比如:
我这里的问题是:忘记启动服务了,即便改成自动也要先启动服务,下次电脑开机后会自动启动服务
参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。