服务器远程管理是一种技术,服务器远程管理是指通过远程连接来监控、配置和维护服务器的过程,而无需直接在物理服务器前操作。它允许IT管理员在不同的地点对服务器进行配置、监控和维护,无需物理上接触到服务器本身。这种能力对于管理分布在多个位置的服务器极为重要,尤其是在今天的全球化和云计算环境中。
目录
主要远程管理工具和技术
1.远程桌面协议(RDP)
- RDP(Remote Desktop Protocol) 是由微软开发的⼀种协议,允许⽤户通过图形界⾯连接到远程Windows服务器。这是Windows环境中最常⽤的远程管理⼯具之⼀
- 主要特点:
2.安全壳(SSH)
- SSH是一种加密的网络协议,用于在不安全的网络上安全的访问远程计算机。SSH广泛应用于Unix和Linux系统的远程管理,也可用于Windows
- 主要特点:
3.Telnet
- Telnet是⼀种较⽼的⽹络协议,⽤于从远程位置通过命令⾏界⾯访问另⼀台计算机。尽管它在早期⼴泛使⽤,但由于其缺乏安全性(不提供数据加密),现在通常被更安全的协议如SSH所替代。
- 主要特点:
4.虚拟网络计算(VNC)
- VNC允许⽤户远程控制另⼀台计算机的屏幕。它是⼀个跨平台的解决⽅案,⽀持Windows、Mac OS、Linux等多种操作系统。
- 主要特点:
5.管理控制台
- 如HP的iLO(Integrated Lights-Out)、Dell的iDRAC(Integrated Dell Remote AccessController)和Supermicro的IPMI(Intelligent Platform Management Interface)等。这些是硬件级的解决⽅案,允许管理员即使在操作系统未运⾏时也能监控和管理服务器。
- 主要特点:
6.Windows管理工具
- 包括Windows Admin Center、系统中⼼配置管理器(SCCM)和PowerShell。这些⼯具允许管理员执⾏⾼级管理任务,如更新管理、策略应⽤和⾃动化脚本执⾏。
- 主要特点:
7.向日葵(Sunflower)
- 向⽇葵远程控制是⼀款流⾏的远程桌⾯软件,主要在中国使⽤。它允许⽤户通过互联⽹从⼀个设备远程访问和控制另⼀个设备。向⽇葵特别适合个⼈⽤户和⼩型企业,提供简单易⽤的界⾯和快速连接功能。
- 主要特点:
远程管理的关键特性
- 安全性:远程管理需要强⼤的安全措施,以防⽌未经授权的访问。使⽤VPN(虚拟私⼈⽹络)、TLS/SSL加密和多因素认证是提⾼远程管理安全性的常⽤⽅法。
- 可访问性:管理员应能从任何地点访问服务器。这通常通过互联⽹或私有⽹络实现。
- 监控和警报:远程管理⼯具通常提供监控功能,可以实时检测硬件故障、性能瓶颈或安全问题,并可配置警报通知管理员。
- 自动化:许多远程管理⼯具⽀持任务⾃动化,例如定期备份、批量更新和监控脚本,这有助于简化管理任务,减少⼈为错误。
使用场景:
- 数据中⼼管理:远程管理允许单个管理员从中⼼位置管理多个数据中⼼的服务器。
- 云服务:云服务提供商利⽤远程管理技术来维护和管理托管服务。
- 灾难恢复:在出现物理访问限制的情况下(如⾃然灾害),远程管理允许业务连续性和快速恢复
协议分析
RDP(图形化交互)
发展历史:
- RDP 最初发布于1996年 ,在Windows NT 4.0 Terminal Server Edition中引⼊,⽬的是允许多个⽤户通过终端会话同时使⽤⼀台服务器。
- 随着时间的推移,RDP得到了扩展,包括更好的安全性、带宽管理、设备重定向等。
设计理念:
- RDP设计为⽀持⾼效的远程图形界⾯交互。
- 它通过将显示输出、键盘和⿏标输⼊封装在⼀个易于传输的格式中,来优化⽤户的远程体验。
协议细节:
- 基于ITU-T T.128协议修改⽽来。
- 使⽤128位或更⾼强度的加密。
端口和协议号:
- 默认TCP和UDP端口3389
数据包结构:
- 包括⼀个协议版本号,后跟⼀系列封装的虚拟通道数据,这些数据可以独⽴于主RDP流进⾏传输。
- 数据包通常由标头和正⽂组成,标头包含指示数据类型(如输⼊、输出、剪贴板操作)的信息。
标准化文档:
- RDP的部分实现细节在微软的Open Specification中有所披露,以⽀持第三⽅的兼容性开发。
TELNET(命令行交互)
发展历史:
- Telnet是互联⽹最早的协议之⼀,定义于1969年,原设计⽤于远程登录。
- 随着互联⽹的发展,其安全性问题逐渐显露,因此现在很少使⽤。
设计理念:
- 为计算机⽹络提供虚拟终端服务。
- 允许⽤户在本地计算机上以⽂本模式控制远程主机。
协议细节:
- 是⼀种明⽂协议,不提供任何加密措施。
端⼝和协议号:
- 默认TCP端⼝23。
数据包结构:
- 数据包⾮常简单,主要是按序列传输的命令和⽂本数据。
标准化⽂档:
- 定义在多个RFC中,包括RFC 854(Telnet协议规范)及其相关扩展
SSH(安全交互)
发展历史:
- SSH由Tatu Ylönen在1995年创建,以解决Telnet的安全缺陷。
- SSH已经发展到SSH-2,这是⽬前最常⽤的版本,提供更强的安全性和功能。
设计理念:
- 提供⼀个安全的通道,⽤于远程登录和其他⽹络服务。
- 使⽤密钥和加密技术来保证数据在⽹络中的安全。
协议细节:
- SSH使⽤公钥加密进⾏⽤户认证,⽀持多种数据加密算法。
端⼝和协议号:
- 默认TCP端⼝22。
数据包结构:
- SSH协议的数据包包括⻓度、填充⻓度、有效载荷、随机填充和MAC。这种结构有助于确保数据的机密性和完整性。
标准化⽂档:
- SSH-2协议在RFC 4251及其系列⽂档中定义。
SSH与OpenSSH
SSH(Secure Shell)是一个网络协议,用于加密方式远程登录到服务器及其他网络服务。它提供了安全的数据传输、远程命令执行、文件传输等功能。SSH是网络通信中常用的安全协议,被设计来替代不安全的Telnet协议。OpenSSH是一个SSH协议的免费开源实现,由OpenBSD社区开发和维护。
传统的⽹络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在⽹络上⽤明⽂传送⼝令和数据,别有⽤⼼的⼈⾮常容易就可以截获这些⼝令和数据。⽽且,这些服务程序的安全验证⽅式也是有其弱点的,就是很容易受到“中间⼈”(man-in- the-middle)这种⽅式的攻击。所谓“中间⼈”的攻击⽅式,就是“中间⼈”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间⼈”⼀转⼿做了⼿脚之后,就会出现很严重的问题。
SSH的英⽂全称是Secure SHell。通过使⽤SSH,你可以把所有传输的数据进⾏加密,这样“中间⼈”这种攻击⽅式就不可能实现了,⽽且也能够防⽌DNS和IP欺骗。还有⼀个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,⼜可以为ftp、pop、甚⾄ppp提供⼀个安全的“通道”。
最初SSH是由芬兰的⼀家公司开发的。但是因为受版权和加密算法的限制,现在很多⼈都转⽽使⽤OpenSSH。OpenSSH是SSH的替代软件,⽽且是免费的,可以预计将来会有越来越多的⼈使⽤它⽽不是SSH。
SSH安全验证
从客户端来看,SSH提供两种级别的安全验证
第⼀种级别(基于⼝令的安全验证)只要你知道⾃⼰帐号和⼝令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间⼈”这种⽅式的攻击。
第⼆种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为⾃⼰创建⼀对密匙,并把公⽤密匙放在需要访问的服务器上。如果你要连接到SSH 服务器上,客户端软件就会向服务器发出请求,请求⽤你的密匙进⾏安全验证。服务器收到请求之后,先在你在该服务器的家⽬录下寻找你的公⽤密匙,然后把它和你发送过来的公⽤密匙进⾏⽐较。如果两个密匙⼀致,服务器就⽤公⽤密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以⽤你的私⼈密匙解密再把它发送给服务器。
⽤这种⽅式,你必须知道⾃⼰密匙的⼝令。但是,与第⼀种级别相⽐,第⼆种级别不需要在⽹络上传送⼝令。
第⼆种级别不仅加密所有传送的数据,⽽且“中间⼈”这种攻击⽅式也是不可能的(因为他没有你的私⼈密匙)。但是整个登录的过程可能需要10秒。
SSH支持的三种端口转发类型
SSH端⼝转发是SSH的⼀项强⼤功能,它可以通过安全的SSH隧道将TCP端⼝从⼀个⽹络节点转发到另⼀个⽹络节点。这种⽅法经常⽤来保护那些本身不⽀持加密的⽹络协议的数据传输,或者创建安全的路径穿过防⽕墙。
1.本地端口转发
本地端⼝转发允许你将本地计算机上的⼀个端⼝通过SSH连接转发到远程服务器上的特定端⼝。这样,任何发送到本地端⼝的数据都会被⾃动加密并通过SSH隧道发送到远程服务器。
例⼦: 假设你想安全地访问你办公室⽹络中的⼀个内部⽹站,该⽹站在内部端⼝80上运⾏,但这个⽹站在外部不可访问。你可以在你的本地机器上设置SSH本地端⼝转发,将本地端⼝8888转发到办公室服务器的端⼝80。通过访问你本地机器的端⼝8888,你可以安全地浏览内部⽹站,就好像你直接连接到办公室⽹络⼀样。
2.远程端口转发
远程端⼝转发与本地端⼝转发相反,它允许你将远程计算机上的⼀个端⼝通过SSH连接转发回本地计算机的特定端⼝。这种⽅式允许远程服务器访问本地服务。
例⼦: 如果你在家中运⾏⼀个只能在本地访问的开发服务器,并希望你的同事从他们的远程位置访问这个服务器,你可以使⽤SSH远程端⼝转发。设定SSH远程端⼝转发,将你的开发服务器的端⼝(例如5000)转发到你办公室电脑上的端⼝(例如5000)。这样你的同事就可以通过访问办公室电脑上的指定端⼝来访问你家⾥的开发服务器。
3.动态端口转发
动态端⼝转发创建⼀个SOCKS代理服务器,可以将通过该代理的所有TCP连接动态地转发到远程服务器,然后由远程服务器将流量转发到⽬标地址。这是⼀种⾮常灵活的⽅式,可⽤于安全地浏览⽹络或管理多个⽬标。
例⼦: 如果你需要安全地浏览互联⽹,或访问多个内部⽹络资源,但不希望设置多个特定的端⼝转发,你可以配置⼀个SSH动态端⼝转发。通过将你的浏览器或其他应⽤配置为使⽤本地设置的SOCKS代理,所有⽹络请求都将通过SSH隧道安全转发。这些端⼝转发⽅法扩展了SSH的功能,使其不仅仅是⼀个远程命令⾏⼯具,还是⼀个强⼤的⽹络⼯具,可以⽤于各种安全和管理任务。
协议对比
实验一、Telnet服务器
实验步骤:
- 添加功能——telnet服务器
- 检查防火墙规则(可新建规则)
- 启动telnet服务
- 组账户管理——telnetclients加入对应账户
步骤1:安装Telnet服务
首先我们打开服务管理器:登陆到Windows Server 2012,选择服务管理器,然后选择添加角色和功能。
或
在添加角色和功能想向导中,点击下一步,然后选择“基于角色或基于功能”,点击下一步,选择要配置的服务器,点击下一步。
选择要配置的服务器,点击下一步。在“功能”页面中,向下滚动并勾选“Telnet服务器”选项,安装完成后关闭
步骤2:启动并配置Telnet服务
打开服务管理器,选择工具,然后选择服务。在服务管理器中找到Telnet服务,右键选择“启动”
如果这里的启动是不可选的,我们需要先选择属性,在启动类型下拉菜单中将禁用改为自动或手动,然后再启用
步骤3:配置防火墙:
首先需要允许Telnet通过防火墙。打开控制面板,进入 系统和安全—>Windows Defender防火墙
点击高级设置,进入防火墙高级设置
在左侧选择入站规则,点击新建规则
选择“端口”规则类型,点击下一步。选择TCP,在特定本地端口中输入23(Telnet默认使用端口23),点击下一步
选择允许连接,再根据需要选择该规则适用的网络类型(域、专用、公共),给规则命名,如允许Telnet,点击完成,之后会多出一条新的规则在最上面。
如果你嫌上面的配置太麻烦,其实在我们下载Telnet服务器的时候,就已经自动配置好了一条入站规则,名为“Telnet服务器”,只不过我在本实验中提前将它禁用了,自己手动配置了一条入站规则,在这个实验中,你完全可以使用它为你自动配置的这条规则。甚至,对于本实验,你可以直接关闭防火墙。
步骤4:组账户管理:
打开计算机管理,找到本地账户管理,选择组,在组里找到“TelnetClients”,在里面添加上自己的账户(注意:账户一定要设置密码)
此外,对于防火墙的设置,还可以添加允许远程访问的用户
步骤5:测试Telnet连接:
使用Telnet客户端连接到服务器。在另一台计算机上(在下面我用text1举例),打开命令提示符(或终端),输入以下命令以测试连接到服务器:
telnet <服务器IP地址>
如果Telnet服务器工作正常,你应该能看到Telnet提示符,可以输入用户名和密码进行登录
在客户机上打开命令行,执行telnet命令。先查看好服务机的IP地址,然后切换到客户机进行远程登录
来到服务机,输入telnet命令来进行远程连接,如果连接成功的话会出现提示,询问我们连接可能不安全,是否继续,我们选择Y(是)
输入我们要连接的机子的用户名和密码,成功连接(注意,这里输入密码是不显示在屏幕上的)
当我们看到上面的页面,说明我们已经成功连接了,现在这个页面就相当于administrator的“终端”,我们可以在上面执行我们想要的操作,比如whoami查看身份,ipconfig查看地址等等
注意事项:
telnet在win10下是默认不开启的,需要我们手动开启一下。
在控制面板中,我们选择程序--启动或关闭Windows功能,然后勾选Telnet客户端选项,安装。等待一段时间让系统更新设置。
出现提示“telnet 不是内部或外部命令,也不是可运行的程序 或批处理文件。”之类的提示,原因是——你当前登陆的设备不是客户端,这时我们需要在电脑上再去安装一个Telnet客户端以匹配服务器的连接。
注意:
- 安全性:Telnet传输的内容是明文的,包括用户名和密码。因此,Telnet不建议用于生产环境中敏感信息传输。通常建议使用SSH代替Telnet,因为SSH提供加密连接
- 权限问题:只有管理员和授权用户才能通过Telnet连接到服务器。如果需要为其他用户授予Telnet访问权限,请确保用户属于正确的用户组或具有适当的权限
实验二、Windows Server开启远程桌面服务RDP
适⽤的情景为:需要对服务器开启⻓期、稳定、且不限制连接数的远程功能,即多⽤户、多终端可以同时远程登录到这⼀台服务器中;远程桌⾯服务开启的前提是:Windows系统必须已经激活,且允许远程访问已开启。
实验步骤:
- 添加远程服务
- 配置远程服务
- 添加远程用户
- 测试
步骤1:添加远程桌面服务
打开“服务器管理器”,点击“添加角色和功能”,前面一直点下一步,和上个实验相似,在选择安装的服务器角色这步,勾选最下面的“远程桌面服务”
勾选上“远程桌面会话主机”和“远程桌面授权”两个(勾选时弹出的窗口默认直接点击确定即可),最后确认信息,点击安装。(在winserver2019中,第一个选项为英文Remote Desktop Session Host)
注意这一步需要管理员权限,我因为做完上个实验忘换回Administrator,还登陆在测试用户机上,没有权限,又重下了一遍……
步骤2:设置远程桌面服务
首先打开运行,搜索组策略编辑器(gpedit.msc),定位展开“计算机配置–>管理模板—>windows组件—>远程桌⾯服务”,在远程桌面会话主机里面打开“授权”
路径:本地组策略编辑器--Windows组件--远程桌面服务--远程桌面会话主机--授权
在右边的设置项中双击第⼀个,为此计算机设置指定的远程桌⾯许可证服务器,勾选“已启⽤”,然后在下⾯输⼊许可证服务器的地址,也就是本机物理⽹卡实际的IP地址,如果有多个⽹卡IP也可以输⼊127.0.0.1代替,然后点应⽤,确定。
然后双击打开第三个配置项,设置远程桌⾯授权模式,勾选“已启⽤”,在选项参数中,切换为“按⽤户”,然后应⽤、确定。
打开之前安装的“远程桌⾯服务—>RD授权诊断程序”,这个程序是⽤来检测远程桌⾯服务配置是否正确,看到如下的内容,说明整个远程授权功能已经配置好了。
步骤3:添加远程的用户并授予远程权限
对于多⽤户的远程连接,还需添加Windows账户⽤户⽤来⽀持远程登录到这台服务器。⼀般情况下,⼀个Windows账户只能被使⽤⼀次来登录到⼀台机器中,如果重复使⽤该账户登录会把前⾯已经远程登录进来的⼈挤掉线。
系统初始只有⼀个administrator管理员账户,肯定⽆法多个⼈来共享使⽤,因此还需要添加多个其他Windows⽤户以⽀持不同的⼈在不同的地⽅远程登录到这台服务器。
⽤户创建完成之后,需要将这些⽤户添加到允许远程访问的⽤户组,否则在远程的时候会提示该⽤户未被允许远程连接。在控制⾯板-系统和安全-允许远程访问,打开系统属性窗⼝,点击“选择⽤户”-“添加”-“⾼级”-“⽴即查找”
这里添加的用户表示的是“我能登上哪几个用户的桌面”,与上个实验不同,这里添加的用户是被登陆者。
步骤4:测试登陆
⾸先要保证是可以ping通服务器的,或者设置服务器的防⽕墙规则,开放出远程桌⾯连接的端⼝3389。此部分内容不再列举出来。运⾏,输⼊mstsc回⻋,打开远程桌⾯连接窗⼝,(或者直接搜索远程桌面连接)输⼊远程服务器的IP地址和登录账户及密码
正确输入密码后,成功连接到桌面。
实验三、Windows 7 开启远程桌面服务RDP
步骤1:确认IP地址
查看网络访问类型及IPv4地址
步骤2:添加本地用户和组
win+R运行---mmc---控制台---文件---添加 本地用户和组
步骤3:添加用户密码
net user admin 123.com #修改admin账号密码 net user test 123.com /add #创建账号 net localgroup administrators test /add #添加账号test到管理员组
步骤4:启用远程登录
步骤5:启用连接
和之前的连接方法一样,输入正确的IP地址以及密码,成功连接
实验四、Telnet Windows 7
实验步骤:
- 安装telnet服务端
- 把需要telnet登陆的账号添加到telnet组
- 启动服务
- 测试telnet
成功接入,实验结束
实验五、OpenSSH
实验步骤:
- 下载安装OpenSSH,安装解压至C:\Program Files\OpenSSH-Win64 ,并进入到该文件夹
- 按Shift与⿏标右键,选择“在此处打开命令窗⼝”,输入命令 powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
- 启动服务与配置
- 防火墙开放服务。与之前配置telnet防火墙策略一样,新建入站规则--选择端口--选择TCP、特定本地端口22--允许连接--应用在所有位置--输入名称,完成设置
- 测试OpenSSH。使用语法:ssh ⽤户名@服务器IP地址,当⾸次连接到服务器时,系统会询问是否接受服务器的公钥。键⼊ yes 然后按 Enter
ssh administrator@172.16.130.148
至此,我们成功通过SSH登录,可以在win10上执行任何操作了
六、远程连接服务逻辑
Telnet、SSH和RDP是三种常用的远程连接协议,它们各自有不同的逻辑和用途:
Telnet
1. **建立连接**:
- 用户在客户端输入`telnet [服务器IP] [端口]`命令尝试连接到远程服务器。
2. **认证**:
- Telnet协议本身不提供加密认证,用户需要在连接后通过操作系统的认证机制登录。
3. **数据传输**:
- 一旦认证成功,用户可以在本地输入命令,这些命令会发送到远程服务器执行,并将结果返回给用户。
4. **安全性问题**:
- Telnet以明文传输数据,容易受到监听和中间人攻击,因此不推荐在不安全的网络中使用。
5. **使用场景**:
- 由于安全问题,Telnet在现代网络中很少使用,主要用作教学或测试某些简单服务。
SSH (Secure Shell)
1. **建立安全连接**:
- 用户使用SSH客户端通过指定的端口连接到SSH服务器。
2. **认证**:
- 用户可以通过密码或更安全的密钥对(公钥/私钥)进行认证。
3. **数据加密**:
- SSH在客户端和服务器之间建立一个加密的隧道,确保传输的数据安全。
4. **命令执行和数据传输**:
- 用户可以在加密的会话中执行远程命令,传输文件,或使用端口转发等高级功能。
5. **使用场景**:
- SSH广泛用于安全地访问远程服务器,进行命令行操作,数据传输,以及作为其他协议的安全通道。
RDP (Remote Desktop Protocol)
1. **建立连接**:
- 用户使用RDP客户端程序连接到配置了RDP服务的远程计算机。
2. - **图形界面传输**:
- RDP优化了图形界面的传输,允许用户访问远程计算机的桌面环境。
3. **认证**:
- 用户需要提供有效的用户名和密码进行认证。
4. **交互式操作**:
- 用户可以在远程桌面上进行交互操作,就像直接在物理机前操作一样。
5. **资源优化**:
- RDP对带宽和资源使用进行了优化,适合图形界面的远程访问。
6. **使用场景**:
- RDP主要用于Windows环境中,允许用户远程访问应用程序和整个桌面环境,适合需要图形界面操作的场景。
总结
- **Telnet**:简单但安全性低,主要用于教学或测试。
- **SSH**:提供加密的远程命令行访问和安全的文件传输,适用于多种操作系统。
- **RDP**:提供完整的图形界面访问,适合需要交互式操作的环境,主要用于Windows系统。
每种协议都有其特定的用途和优势,选择哪种协议取决于用户的需求和安全考虑。