【运维】远程控制与访问的协议(域,工作组,RDP,ARD,VNC,SSH,SCP)和工具(DDNS,跳板机,堡垒机)
文章目录
声明:本文所有内容均来自互联网 & AIGC,无加密资料,引用已注明出处(见参考资料),侵删
1、远程访问协议
1.1 组织:域、工作组、局域网
重点:理清这几个之间的关系即可
在计算机科学和网络技术中,域(Domain)和工作组(Workgroup)是两种不同的组织和管理网络资源的方式。它们在功能和用途上有一些基本的区别和联系。
域(Domain)
定义:
- 域是一种由多个计算机组成的网络结构,通常用于大型组织或企业。
- 域中的计算机和用户都受到一个中央服务器(如域控制器)的统一管理。
特点:
- 集中管理:域控制器负责管理域内的所有计算机和用户账户,包括安全策略、用户权限等。
- 安全性:域环境提供了较高的安全性,通过域控制器集中控制访问权限和安全策略。
- 资源管理:域内资源(如文件服务器、打印服务器等)可以被集中管理,易于访问和维护。
用途:
- 适用于需要高度安全和集中管理的组织,如企业、学校等。
工作组(Workgroup)
定义:
- 工作组是一种较为松散的网络组织形式,通常由一组计算机组成,但这些计算机不受到中央服务器的统一管理。
- 工作组内的计算机可以是个人电脑或小型办公网络的一部分。
特点:
- 分散管理:工作组内的计算机各自管理自己的资源和用户账户,没有统一的控制中心。
- 灵活性:适合小型组织或家庭网络,易于设置和管理。
- 安全性:安全性相对较低,因为每个计算机需要单独管理其安全策略和用户权限。
用途:
- 适用于小型组织或家庭网络,不需要复杂的管理结构。
相关概念和用法
域控制器(Domain Controller):
- 域控制器是域环境中的核心服务器,负责处理域内的所有安全和资源管理任务。
- 它管理用户账户、组策略、安全策略等。
活动目录(Active Directory):
- 活动目录是微软提供的一套目录服务,用于管理域环境中的用户、计算机、资源和安全策略。
- 它通过一个分层的目录结构来组织和管理信息。
组策略(Group Policy):
- 组策略是一种管理工具,用于在域环境中应用统一的配置和管理策略。
- 通过组策略,管理员可以控制计算机和用户的行为,如设置安全选项、控制应用程序等。
用户账户:
- 在域环境中,用户账户通常由域控制器管理,而不是单个计算机。
- 用户可以通过域账户访问域内的所有资源,而不需要在每个计算机上重复登录。
信任关系(Trust Relationship):
- 信任关系是域与域或域与工作组之间的一种安全协议,允许用户从一个域访问另一个域的资源。
- 通过设置信任关系,可以增强不同域之间的协作和资源共享。
在实际应用中,选择域还是工作组主要取决于组织的需求和规模。大型组织通常选择域以实现更高效的管理和更严格的安全控制,而小型组织或家庭用户则可能更倾向于使用工作组以获得更大的灵活性和简便性。
域与局域网的关系:
- 域可以部署在局域网上,为局域网内的计算机和用户提供集中式的身份验证、安全策略和资源管理。
- 局域网可以跨越多个域,但每个域通常是一个独立的管理单元。
工作组与局域网的关系:
- 工作组通常用于局域网中的小型网络环境,提供了一种简单的资源共享和管理方式。
- 局域网内可以有多个工作组,每个工作组内的计算机独立管理自己的资源。
总结来说,域和工作组是网络资源管理的不同方式,可以应用于局域网环境中,以满足不同规模和需求的组织。局域网提供了物理连接和通信的基础,而域和工作组则在此基础上提供了不同级别的管理和安全控制。
Windows 中的域(Active Directory):
- Active Directory(AD) 是 Microsoft Windows 网络环境中的目录服务,用于管理和组织网络中的资源,例如用户、计算机、打印机和其他网络对象。
- 在 Windows 中,域通常指与 Active Directory 集成的网络环境,其中域控制器负责管理和控制域内的用户身份验证、资源访问控制等功能。
macOS 中的域(Open Directory):
- Open Directory 是 macOS 系统中的目录服务,用于集中管理用户、组和计算机等信息。
- macOS 系统可以与 Open Directory 集成,使用户可以通过集中式身份验证获取资源、共享文件夹等。
- 尽管 macOS 使用 Open Directory 进行用户身份验证和访问控制,但通常在企业环境中仍会使用 Windows 的 Active Directory 作为主要的域管理系统,以便统一管理所有操作系统的设备。
无论是 Windows 的 Active Directory 还是 macOS 的 Open Directory,域的概念都旨在简化网络管理,提高安全性和访问控制,以及促进资源共享和统一的用户管理。
1.2 终端:SSH,SCP,SFTP
重点学习:ssh生成本地公钥+私钥(配置git,服务器免密连接),scp文件传输等命令
SSH (Secure Shell):
- 定义: SSH是一种网络协议,用于加密方式远程登录到其他计算机。它通常用于远程访问服务器,进行文件传输,以及执行命令。
- 功能:
- 远程登录: 允许用户通过加密的方式登录到远程计算机。
- 文件传输: 通过SCP和SFTP等工具,可以安全地传输文件。
- 端口转发: 可以转发本地计算机的端口到远程计算机,从而访问远程服务。
- 安全性: SSH使用公钥加密技术,确保数据传输的安全性。用户需要提供公钥和私钥进行认证。
SCP (Secure Copy Protocol):
- 定义: SCP是一种基于SSH的文件传输协议,主要用于在本地计算机和远程计算机之间复制文件。
- 功能:
- 文件传输: 通过SSH加密通道,安全地传输文件。
- 简单易用: 命令行工具,操作简单,易于自动化脚本。
- 使用方式:
- 基本命令格式为:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
- 例如:
scp /path/to/local/file user@remotehost:/path/to/remote/file
- 基本命令格式为:
SFTP (Secure File Transfer Protocol):
- 定义: SFTP是一种基于SSH的文件传输协议,用于在本地计算机和远程计算机之间进行文件传输和文件系统操作。
- 功能:
- 文件传输: 通过SSH加密通道,安全地传输文件。
- 文件系统操作: 除了文件传输,SFTP还支持文件删除、重命名、目录浏览等操作。
- 交互式操作: 提供了一个交互式的命令行界面,用户可以通过命令行进行文件操作。
- 使用方式:
- 通常通过SSH客户端启动SFTP会话,例如在Linux中可以使用:
sftp user@remotehost
- 进入SFTP会话后,可以使用类似FTP的命令进行文件操作,如
put
、get
、ls
、cd
等。
- 通常通过SSH客户端启动SFTP会话,例如在Linux中可以使用:
SSH(Secure Shell)是一种加密的网络协议,用于安全地访问远程计算机。以下是一些基本的SSH命令和它们的用法:
基本连接命令:
ssh [user@]hostname
user
: 远程服务器的用户名,默认为本地用户的用户名。hostname
: 远程服务器的IP地址或域名。
指定端口:
ssh -p port user@hostname
-p port
: 指定SSH连接使用的端口,默认是22。
使用特定配置文件:
ssh -F config_file user@hostname
-F config_file
: 指定一个配置文件,其中包含了SSH连接的参数。
使用SSH密钥:
ssh -i identity_file user@hostname
-i identity_file
: 指定私钥文件的路径,用于无密码登录。
隧道端口转发:
ssh -L local_port:remote_host:remote_port user@hostname
-L local_port:remote_host:remote_port
: 将远程主机上的端口转发到本地端口。
X11转发:
ssh -X user@hostname
-X
: 启用X11转发,允许在本地计算机上显示远程应用程序的图形用户界面。
压缩数据:
ssh -C user@hostname
-C
: 启用压缩数据传输,可以加快传输速度。
查看远程主机的指纹:
ssh-keyscan remote_host
- 该命令用于获取远程主机的公钥指纹,可以用于验证远程主机的身份。
使用代理连接:
ssh -D [bind_address:]port user@hostname
-D
: 创建一个SOCKS代理服务器,可以用于连接需要代理的网络。
保持连接:
ssh -o ServerAliveInterval=60 user@hostname
-o ServerAliveInterval
: 每隔一定时间发送一个空包以保持连接。
执行远程命令:
ssh user@hostname 'command'
- 直接在SSH命令中指定要执行的命令。
退出SSH会话:
exit
- 或者使用
logout
或Ctrl+D
来退出当前的SSH会话。
- 或者使用
这些是SSH命令的一些基本用法,SSH提供了丰富的选项来满足不同的网络连接需求。
使用SSH生成本地的公钥和私钥通常涉及以下步骤:
生成密钥对:
打开终端或命令提示符,使用以下命令生成新的RSA密钥对(默认情况下,SSH使用RSA算法,但你可以选择其他算法,如ECDSA或Ed25519):ssh-keygen -t rsa -b 4096
-t
指定密钥类型,rsa
是最常见的。-b
指定密钥的位数,4096
位提供了较高的安全性。
选择文件位置(查看私钥):
执行上述命令后,系统会询问你保存密钥对的位置。如果你直接按回车,它将默认保存在~/.ssh/id_rsa
。设置密码:
接下来,系统会提示你输入密码来保护私钥。这是可选的,但推荐使用以增加安全性。如果你不想设置密码,可以直接按回车跳过。确认密码:
如果设置了密码,你需要再次输入密码以确认。查看公钥:
生成密钥对后,你可以使用以下命令查看公钥:cat ~/.ssh/id_rsa.pub
这将显示公钥的内容,你可以复制这些内容。
复制公钥到远程服务器:
使用ssh-copy-id
命令将公钥复制到远程服务器的~/.ssh/authorized_keys
文件中,以便实现无密码登录:ssh-copy-id user@remote_host
- 替换
user
和remote_host
为你的用户名和远程服务器的地址。
- 替换
测试无密码登录:
复制公钥后,尝试使用SSH命令登录远程服务器,看是否能够无密码登录:ssh user@remote_host
请注意,这些步骤适用于大多数Unix-like系统,包括Linux和macOS。如果你使用的是Windows系统,可以使用如Git Bash或Windows Subsystem for Linux (WSL)来执行上述命令,或者使用专门的SSH客户端,如PuTTY,它有自己的方法来生成和使用密钥对。
1.3 桌面:Windows(RDP)
windows之间默认都带远程桌面,用的就是rdp
macos可以用homebrew安装微软官方的remote desktop 客户端
ios的商店也有该官方软件可用(需要登录appleid)
brew install microsoft-remote-desktop --cask
定义:RDP 是由 Microsoft 开发的远程桌面协议,允许用户通过网络远程连接到运行 Windows 操作系统的计算机,并可以在远程计算机上使用它们的桌面。
特点:RDP 提供了远程桌面服务,用户可以在远程计算机上执行应用程序、访问文件和资源,甚至控制远程计算机。RDP 通常用于远程支持、远程管理和远程访问等场景。
安全性:RDP 支持加密,并提供身份验证和授权机制,可以通过 VPN 或其他安全手段增强远程连接的安全性。
1.4 桌面:macOS(ARD)
定义:ARD 是苹果公司开发的一种远程管理软件,主要用于管理和监控运行 macOS 的计算机组。它不仅支持远程桌面访问,还提供了诸如软件分发、屏幕共享、远程维护等更全面的功能。
特点:ARD 提供了诸如屏幕共享、文件传输、远程脚本执行、实时屏幕监控等高级功能,适用于系统管理员和技术支持人员对 macOS 设备进行远程管理。
安全性:ARD 支持加密通信,可以设置权限和用户身份验证来保护远程访问和控制的安全。
基于ARD(Apple Remote Desktop)协议实现Mac远程访问,您可以使用macOS自带的屏幕共享功能,或者使用第三方应用程序来实现。以下是一些推荐的资料和方法:
macOS自带屏幕共享:macOS系统自带的屏幕共享功能可以方便地实现Mac远程访问。您可以在系统偏好设置中打开“共享”,然后勾选“屏幕共享”,设置连接密码后即可使用VNC客户端进行远程访问 。
使用VNC客户端:在Windows系统上,您可以使用VNC Viewer连接到Mac。下载并安装VNC Viewer后,输入Mac的IP地址和VNC登录密码即可远程登录成功 。
内网穿透工具:如果您需要从公网远程访问Mac,可以使用内网穿透工具如cpolar。通过创建TCP隧道映射VNC默认端口5900,您可以使用生成的公网地址进行远程访问 。
FreeRDP:FreeRDP是一个远程桌面协议(RDP)的实现,支持多种平台。在MacOS系统下,您可以通过Homebrew安装FreeRDP,并使用它来连接到远程Windows桌面 。
Microsoft Remote Desktop:微软提供的Microsoft Remote Desktop软件也适用于Mac,可以用来远程访问Windows系统 。
aFreeRDP:aFreeRDP是FreeRDP的Android版本,支持RDP协议,适用于需要在移动设备上进行远程桌面操作的用户 。
SakuraFrp:SakuraFrp提供了远程桌面(RDP)穿透指南,包括如何安全地设置远程桌面连接,以及如何通过内网穿透技术实现公网远程访问 。
1.5 桌面:Linux(VNC)
1、vnc需要客户端+服务端,但是几乎支持所有平台之间的通讯(包含win,mac,linux,甚至是虚拟机都可以,只要网络互通,ip+端口就可以访问到)
2、另外需要注意一下服务端vnc的端口5900开始的
3、vnc支持图形化,也支持非图形化
定义:VNC 是一种远程桌面协议,允许用户通过网络远程连接到运行 VNC 服务器的计算机,实现远程桌面访问和控制。
特点:VNC 具有跨平台的特性,支持多种操作系统,包括 Windows、macOS 和 Linux。用户可以在远程计算机上实时显示和操作桌面,非常适用于远程支持和远程访问。
安全性:VNC 可以使用加密和密码来保护远程连接,也可以结合其他安全手段提高连接的安全性。
VNC(Virtual Network Computing)协议是一种允许用户通过网络远程访问和控制另一个计算机的图形界面的协议。以下是VNC协议的一些基本使用介绍:
远程桌面访问:VNC允许用户从一台计算机(客户端)远程访问另一台计算机(服务器)的桌面环境。
跨平台:VNC是跨平台的,可以在不同的操作系统上运行,包括Windows、macOS、Linux等。
安装VNC服务器:要在远程计算机上使用VNC,首先需要在该计算机上安装VNC服务器软件。这将允许其他计算机连接到该计算机的桌面。
安装VNC客户端:用户需要在本地计算机上安装VNC客户端软件,以便能够连接到远程服务器。
配置VNC服务器:安装VNC服务器后,通常需要进行一些配置,比如设置访问密码、选择要共享的桌面环境等。
连接到VNC服务器:使用VNC客户端,输入远程服务器的IP地址和端口号,然后输入配置的密码(如果有设置的话),即可连接到远程桌面。
交互操作:一旦连接成功,用户就可以像操作本地计算机一样操作远程计算机,包括打开应用程序、编辑文档、浏览网页等。
安全性:由于VNC协议传输的数据包括键盘输入和鼠标移动,因此安全性非常重要。建议使用加密连接,并且在不使用时及时断开连接。
性能考虑:VNC协议的性能可能会受到网络速度和延迟的影响。在高延迟或低带宽的网络环境下,远程桌面可能会显得不够流畅。
商业和开源解决方案:市面上有许多商业和开源的VNC解决方案,如RealVNC、TightVNC等。
VNC协议非常适合需要远程访问计算机桌面环境的场景,例如技术支持、远程办公或教育等。然而,由于其对网络条件的依赖以及可能的安全风险,使用时需要谨慎考虑。
VNC 协议使用特定的端口来实现远程桌面连接。VNC 服务器通常使用从5900开始的高号端口,每个VNC会话都使用一个唯一的端口。例如,如果你正在连接到显示号为1的VNC服务器,你将连接到5900端口;如果是显示号2,则连接到5901端口,以此类推 。
在配置VNC服务器时,可以通过/etc/sysconfig/vncservers
文件来设置VNC服务器使用的端口。这个文件允许你定义多个VNC服务器实例,每个实例都关联一个不同的端口号。例如,可以设置root用户的VNC会话在端口5901上监听,而普通用户ceboy的VNC会话在端口5902上监听 。
VNC客户端连接到服务器时,需要指定服务器的IP地址和端口号。例如,如果服务器地址是192.168.1.11,并且VNC服务器正在端口1上运行,客户端应该连接到192.168.1.11:1
。此外,VNC还可以通过Web浏览器以Java applet的形式访问,端口号从5800开始 。
在安全性方面,建议使用SSH隧道来加密VNC连接,以提高数据传输的安全性 。此外,还可以通过配置文件设置VNC服务器的分辨率、色深等参数 。
如果你需要更改现有电脑上的VNC端口,可以在远程桌面应用程序中编辑电脑的显示简介,更改“屏幕共享端口”设置 。如果你在添加电脑时需要指定自定义VNC端口,可以在添加过程中输入映射到客户端的公共端口 。
总之,VNC端口是实现远程桌面连接的关键部分,正确的配置和管理可以提供安全且高效的远程访问体验。
2、远程控制工具(高阶)
2.1 动态域名系统DDNS与内网穿透NAT traversal
内网穿透是一种技术,允许外部网络用户访问位于内网的服务器或设备,通常通过在公网和内网之间建立一个安全的通道来实现。DDNS和内网穿透常常结合使用,通过DDNS提供的域名访问内网穿透技术建立的通道,使得外部用户可以方便地访问内网资源。
什么是DDNS?
DDNS(Dynamic Domain Name System)是一种动态域名系统,用于将动态分配的 IP 地址映射到一个固定的域名。通常,ISP(Internet Service Provider)为用户分配的公网 IP 地址是动态的,每次重新连接时都可能会发生变化。这会导致在远程访问网络资源时面临问题,因为需要知道最新的 IP 地址。
DDNS 解决了这个问题,允许用户绑定一个易于记忆的域名到其动态 IP 地址。当用户的 IP 地址发生变化时,DDNS 服务会自动更新域名记录,使其仍然指向正确的 IP 地址。这使得用户能够用统一的域名来访问其网络资源,而无需担心 IP 地址变化导致的连接问题。
DDNS 主要用于远程访问设备、监控摄像头、远程桌面连接等场景,可以简化管理并提供更稳定的访问体验。
动态域名系统(DDNS)用于远程控制的原理:
IP 地址的变化:通常,个人用户或小型组织使用的网络连接都是动态 IP 地址,这意味着网络服务提供商(ISP)会定期更改分配给用户的 IP 地址。
动态域名系统(DDNS):DDNS 是一种将动态分配的 IP 地址映射到易记的域名的服务。它允许用户在 IP 地址发生变化时继续使用一个常量的域名来访问其网络服务,比如远程控制。
工作原理:用户通过一个 DDNS 提供商注册一个动态域名,并在设备上或路由器中配置 DDNS 客户端。当用户的 IP 地址发生变化时,DDNS 客户端会将新的 IP 地址信息发送给 DDNS 服务器,使得动态域名与新的 IP 地址进行关联。
使用 DDNS 进行远程控制的工具:
No-IP:No-IP 是一个常用的提供 DDNS 服务的公司,用户可以注册一个动态域名,使用他们提供的客户端软件将 IP 地址映射到该域名,从而实现远程控制和访问。
DynDNS:DynDNS 也是提供 DDNS 服务的知名公司,用户可以注册动态域名并使用他们的客户端软件进行配置,使得远程控制和访问更加便捷。
Router 自带 DDNS 功能:许多路由器都具有内置的 DDNS 功能,用户可以在路由器设置中配置 DDNS 信息,使得路由器能够实时更新 IP 地址到动态域名的映射。
这些 DDNS 服务和工具使得用户可以更轻松地通过一个固定的域名访问其动态 IP 地址分配的设备或网络服务,为远程控制和访问提供了便利性和稳定性。
2.2 跳板机
跳板机就是一台服务器,运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作;在腾讯,跳板机是开发者登录到服务器的唯一途径,开发者必须先登录跳板机,再通过跳板机登录到应用服务器。
跳板机(Jump Server)是一种网络安全设备,用于在不安全的网络环境中安全地访问内部网络资源。它通常用于远程访问内部网络,以减少直接暴露内部网络的风险。以下是跳板机的一些关键特点:
隔离性:跳板机位于内网和外网之间,通过隔离技术,如防火墙或VPN,来保护内网不受外部攻击。
权限控制:跳板机可以对访问者进行身份验证和授权,确保只有授权用户才能访问内网资源。
审计和监控:跳板机可以记录所有通过它的访问活动,便于进行安全审计和监控。
安全性:跳板机通常配置有高级的安全措施,如入侵检测系统(IDS)、入侵防御系统(IPS)和防病毒软件。
灵活性:跳板机可以根据不同的需求配置不同的安全策略和访问规则。
多用户支持:允许多个用户同时通过跳板机访问内网资源,但每个用户的操作都是隔离和受控的。
远程访问:支持远程用户通过互联网安全地访问内网资源,而无需直接连接到内网。
资源管理:跳板机可以对访问的资源进行管理和限制,例如限制访问时间、访问的系统资源等。
跳板机是网络安全架构中的一个重要组成部分,它帮助企业在保护内部网络的同时,实现远程访问和操作的需求。
参考:1
2.3 堡垒机
堡垒机是通过切断终端对计算机网络和服务器资源的直接访问,采用协议代理的方式接管终端计算机对网络和服务器的访问。
跳板机(Jump Server)和堡垒机(Bastion Host)的区别:
用途:
跳板机:跳板机是一台位于内部网络和外部网络之间的中间服务器。它用于管理和控制访问内部网络的权限,并作为一种安全控制手段来管理远程访问。
堡垒机:堡垒机是一种特殊配置的服务器,用作跳板机,可以增强对内部网络的访问控制和多层保护。堡垒机在跳板机基础上提供了更多的安全功能和管理机制。
安全性:
跳板机:跳板机主要用于远程连接管理,一般在跳板机上仅开放少量必需的端口,以减少系统受到攻击风险。
堡垒机:堡垒机作为一种更加安全的跳板机,通常具有更严格的安全策略和访问控制,可以监控和审计用户的操作,并提供更多的安全防护措施。
访问权限:
跳板机:跳板机通常用于管理特定的服务器或网络资源,用户通过跳板机访问所需资源,可以简化访问控制和审计流程。
堡垒机:堡垒机通常承担更多访问权限的管理责任,可以作为访问内部网络的“门卫”,确保只有经授权的用户能够连接到内部网络资源。
管理功能:
跳板机:跳板机主要用于简化远程管理和访问控制,一般不具备过于复杂的审计和监控功能。
堡垒机:堡垒机通常具有更强大的审计、日志记录和监控功能,可以跟踪用户操作并提供更详细的安全事件记录。
总体来说,堡垒机相对于跳板机来说更注重安全性和权限管理,提供了更多的安全特性和管理功能,用于加强对内部网络的访问控制和保护。
3、远程控制工具(开箱即用)
3.1 ToDesk
3.2 向日葵
3.3 Teamviewer
3.4 Jump Desktop
Jump Desktop 是一款Mac上非常强大和易用的远程桌面控制软件,支持RDP、VNC协议,无论速度、性能和流畅度上都非常不错,支持全屏、文本粘贴复制、快捷键发送等功能,在各种细节上要比微软的远程桌面优秀很多,可以用它远程连接Windows电脑。
3.5 更多
Microsoft Remote Desktop:微软官方提供的远程桌面服务,支持Windows、macOS、iOS和Android平台,以其稳定性和流畅度著称。
TeamViewer:一款广受欢迎的远程控制软件,以其快速连接和高兼容性而知名,适用于个人和商业用途。
AnyDesk:来自德国的远程桌面工具,以其轻量级和高安全性著称,支持多种操作系统。
Chrome Remote Desktop:谷歌提供的远程桌面解决方案,用户可以通过Chrome浏览器进行远程访问。
Splashtop:提供高性能的远程访问,特别适用于需要高清视频和音频传输的场景。
ToDesk:国产远程控制软件,界面简洁,运行稳定,支持多平台操作。
向日葵:另一款国产远程控制软件,功能全面,适合个人和企业用户。
Remote Desktop Connection Client(以前称为mstsc):Windows自带的远程桌面客户端,支持RDP协议。
VNC Connect:基于VNC协议的远程桌面软件,提供多种版本以满足不同用户的需求。
Parsec:一款专注于游戏的远程桌面软件,提供低延迟的远程游戏体验。
Jump Desktop:适用于Windows、macOS、iOS和Android的远程桌面应用,支持RDP和VNC协议。
Ammyy Admin:一款轻量级的远程桌面软件,安装简单,连接快速。
这些软件各有特点,用户可以根据自己的操作系统、需求和偏好选择最合适的远程桌面解决方案。