大家好,欢迎来到IT知识分享网。
文章目录
随着技术的发展,远程连接已成为日常工作和运维中的常见需求。本文将详细介绍两种主要的Linux远程连接方式:命令行连接和图形化连接。通过本文了解如何使用这些方法安全、高效地连接到远程Linux服务器,无论是在家庭网络环境中还是在企业级环境中,能够根据实际需求选择合适的远程连接方式,并确保连接过程的安全性和稳定性。
1. 远程连接前置知识
1.1 IP地址(服务器位置)
IP地址是计算机在互联网上的唯一的地址编码。这个IP地址就相当于服务器所在的位置。如果要访问连接服务器,那就必须通过服务器的IP地址来实现,服务器的IP地址就相当于服务器的具体地址。
IP分类 | 说明 |
---|---|
公网IP | 可以在世界范围内进行访问的地址 |
私网IP | 局域网IP,只能在某个范围内使用,设备访问公网的话依然需要公网IP地址进行对应 |
在局域网中,预留了IP地址网段,专门用于局域网IP地址的分配:
- A类:
10
段,后三位自由分配,也就是10.0.0.0 - 10.255.255.255
; - B类:
172.16
段,后两位自由分配,也就是172.16.0.0 - 172.31.255.255
; - C类:
192.168
段,后两位自由分配,也就是192.168.0.0 - 192.168.255.255
;
每个局域网中的IP地址也是唯一的。
查看本机IP地址常用方法
- 方法一:
ifconfig
命令该命令是一个用于查看和配置网络接口的命令行工具,能显示网络接口的当前配置信息。部分Linux发行版默认没有该命令,需要进行安装。
在输出中找到对应网卡(eth0)里,inet行的内容就是
本机IP
、子网掩码、广播地址。# CentOS7需要安装软件包net-tools才能使用 [root@localhost ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::8e5c:3831:bf3d:9717 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ba:45:ec txqueuelen 1000 (Ethernet) RX packets 42760 bytes (58.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7721 bytes (507.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 4 bytes 332 (332.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 332 (332.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 方法二:
ip address show
命令这种方法是较为常用的方法之一,是 ip 命令的一种用法。
ip 是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令。
[root@localhost ~]# ip address show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:ba:45:ec brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::8e5c:3831:bf3d:9717/64 scope link noprefixroute valid_lft forever preferred_lft forever # 可以直接指定网卡查询 [root@localhost ~]# ip address show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:ba:45:ec brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::8e5c:3831:bf3d:9717/64 scope link noprefixroute valid_lft forever preferred_lft forever
另外,根据实际操作得到的结果得知,可以不用完整的命令就可以得到想要的内容。例如:
ip addr
、ip a
都可以得到上述结果。
- 方法三:
hostname -I
hostname命令更多的用于显示和设置系统的主机名称。有两个选项,可以用来查看分配给设备的IP地址。
# -I:显示主机的所有网络地址。该选项会枚举所有网络接口上的所有配置地址。环回接口和 IPv6 链路本地地址省略。 [root@localhost ~]# hostname -I 10.0.0.200 [root@localhost ~]# hostname --all-ip-addresses 10.0.0.200 # 了解:-i:显示主机名的网络地址。请注意,只有在主机名可以解析的情况下才有效。 [root@localhost ~]# hostname -i ::1 127.0.0.1
1.2 端口(服务入口)
服务器上往往有很多个功能和服务,一台主机上的各种不同的服务功能都是通过端口来进行表示的。
服务 | SSH | HTTP | HTTPS | SNMP | Rsync |
---|---|---|---|---|---|
端口 | 22 | 80 | 443 | 161 | 873 |
例如,远程连接的服务端口号默认就是22,服务名称是SSH服务。这些端口号是可以通过服务配置文件进行修改的。
常用查看服务占用端口的方法:
- 方法一:使用
netstat
命令[root@localhost ~]# netstat -tulnp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1532/sshd tcp6 0 0 :::22 :::* LISTEN 1532/sshd
- 方法二:使用
ss
命令[root@localhost ~]# ss -tulnp | grep sshd tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1532,fd=3)) tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1532,fd=4))
1.3 协议(通信方式)
不同的服务提供不同的端口,对应于不同的功能,且其通信方式也可能不同,这种客户端和服务器之间的交流的通信方式,可以理解为协议。
一台主机上不同的服务功能都是通过端口来进行区分的。若是不同的服务端口,那么客户端和服务器之间通信时,可能会使用不同的协议。既然我们可以通过IP地址找到服务,那么就可以连接不同的端口来获得不同的服务,以及使用各种不同的协议。
连接的基本名词及对应功能
名称 中文名 含义 IP IP地址 找谁,在哪里 Port 端口 干啥,什么服务 Protocol 协议 什么语言,通信方式 实现远程连接服务器需要知道的信息:
IP地址
、远程连接服务
、远程服务对应端口号
、用户名
、密码
。
2. 命令行远程连接
2.1 SSH远程连接介绍
最常用的提供Linux远程连接服务的工具就是SSH软件。SSH分为SSH客户端和SSH服务器两部分,其中,SSH服务端包含的软件程序主要有openssh
和openssl
。
查询SSH服务端工具安装情况:
[root@localhost ~]# rpm -qa openssh openssl openssl-1.0.2k-19.el7.x86_64 openssh-7.4p1-21.el7.x86_64
openssh 是提供SSH服务的程序;openssl 是为SSH提供连接加密的程序。
2.2 SSH服务端和客户端
- 服务端
启动Linux系统时,默认SSH服务程序会随着系统一起启动。SSH服务时一个守护进程(daemon),他在系统后台永久运行并时刻响应来自所有的SSH客户端的连接请求。
SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的连接请求并进行处理,这些请求一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。
SSH服务时Linux系统优化时需要保留的开机自启动的服务之一。
- 客户端
SSH客户端就是远程访问SSH服务的工具。
常用的工具有SecureCRT、Xshell、putty、以及Linux下的SSH的客户端(命令行)。
2.3 SSH协议介绍
SSH服务端和SSH客户端之间的交流都是通过SSH协议来实现的。在进行数据传输之前,SSH先通过加密技术对联机数据包进行加密处理,然后再进行数据传输,这样就可以保证传输数据的安全。
SSH时专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露,在当前的生产环境中,绝大多数企业普遍采用SSH协议服务来替代传统的不安全的远程联机服务软件,如telnet等。
SSH协议有两个互不兼容的版本,SSH 1.x 和 SSH 2.x。
openssh 同时支持 SSH 1.x 和 SSH 2.x。用SSH 2.x 的客户端程序不能连接到 SSH 1.x 的服务程序上,SSH 2.x 比 SSH 1.x 更安全,默认情况下服务端通过 SSH 2.x 协议提供服务。
SSH 通信示意图
远程连接需要设置的要素
协议 | IP | 端口 | 用户名 | 密码 |
---|---|---|---|---|
SSH(加密) | 10.0.0.200 | 22 | root | |
Telnet(未加密) | 10.0.0.200 | 23 | root |
2.4 远程连接Linux的工具
Linux服务器端守护程序选择了SSH服务,整个连接过程都会加密,因此会比较安全。
Windows系统连接Linux系统的话,则可以选择SecureCRT或Xshell工具;Linux系统连接,就用openssh自带的SSH客户端工具即可。
如果需要用图形进行远程管理,则建议选择vnc。
位置 | 命令行连接工具 | 图形管理工具 |
---|---|---|
服务端 | sshd(openssh、openssl) | vnc server |
客户端 | SecureCRT、Xshell、FinalShell等 | vnc client、xmanger等 |
2.5 SSH工具连接常见问题
2.5.1 连接超时问题
Xshell for Xmanager Enterprise 5 (Build 0769) Copyright (c) 2002-2015 NetSarang Computer, Inc. All rights reserved. Type `help' to learn how to use Xshell prompt. [c:\~]$ Connecting to 10.0.0.200:22... Could not connect to '10.0.0.200' (port 22): Connection failed. Type `help' to learn how to use Xshell prompt. [c:\~]$
如果遇到这个问题,则请检查Linux系统和客户端电脑端的网络连接是不是通畅的,最简单的方法就是在客户端电脑(DOS界面里)上ping一下Linux主机的IP。
如果未能ping通Linux主机的IP,则可以通过如下方法进行检查。
- 确定Linux主机本身的设置是不是正确,或是否获取到了IP,并且这个IP与客户端电脑的IP是不是在同一个网络里。
- Linux系统的防火墙是否阻挡了客户端电脑和Linux主机之间的22端口。关闭CentOS7 Linux防火墙的方法具体如下:
[root@localhost ~]# systemctl stop firewalld #<==关闭防火墙。 [root@localhost ~]# systemctl disable firewalld #<==禁止开机自启动。
2.5.2 SSH端口问题
1)sshd服务程序是否正确开启,确认的示例命令如下:
[root@localhost ~]# ps -ef|grep sshd|grep -v grep root 7337 1 0 10:45 ? 00:00:00 /usr/sbin/sshd -D #<==若有这一行则表示服务正常
2)sshd服务的默认端口22是不是被更改了,确认的示例命令如下:
[root@localhost ~]# netstat -lntup|grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7337/sshd tcp6 0 0 :::22 :::* LISTEN 7337/sshd
3)是否因为开启了firewalld防火墙而导致禁止连接,确认的示例代码如下:
[root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) #<==表示非工作状态。 Docs: man:firewalld(1) Jan 29 22:09:44 oldboy systemd[1]: Starting firewalld - dynamic firewall daemon... Jan 29 22:09:45 oldboy systemd[1]: Started firewalld - dynamic firewall daemon. Jan 30 13:15:59 www systemd[1]: Stopping firewalld - dynamic firewall daemon... Jan 30 13:15:59 www systemd[1]: Stopped firewalld - dynamic firewall daemon.
检测是否开启了防火墙阻挡的简单方法是在客户端电脑或者在Xshell界面里执行telnet 10.0.0.200 22来检查连通性。
Type‘help' to learn how to use Xshell prompt. [c:\~]$ telnet 10.0.0.200 22 Connecting to 10.0.0.200:22... Connection established. To escape to local shell,press 'Ctrl+Alt+]' SSH-2.0-OpenSSH 7.4
4)客户端Xshell是不是配错了连接的端口或IP。
最后就是从连接的Xshell客户端设置检查,以查看配置是否正确,
2.6 SSH远程连接故障排查
2.6.1 故障排查思路
- 第1步:物理链路是否有问题?(客户端执行)
ping 10.0.0.200 # 排查客户端到服务端的线路问题,ping 是常用的网络连通性检查工具(路通否)。 tracert -d 10.0.0.200 # 路由跟踪命令,也可以检查路是否通畅,-d 是不进行反向解析。
- 第2步:是不是防火墙等安全策略阻挡?(服务端查看)
# 防火墙 systemctl stop firewalld systemctl disable firewalld # selinux setenforce 0 # Linux下的防火墙,可能好心办坏事,阻挡了远程连接,22端口一般都是默认开放的,变更端口往往会出现这种问题。
- 第3步: SSH服务是否有问题?(客户端执行)
telnet 10.0.0.200 22 # 判断SSH服务器默认的22端口是否打开了。(客户端执行) # 1.看端口是否打开; # 2.看端口是否改变了; # 3.看防火墙等问题; nmap 10.0.0.200 -p 22 # 也能达到与telnet相同的效果,但nmap只能在Linux中使用
- 第4步: SSH服务是否有问题?(服务端执行)
netstat -lntup|grep sshd # 确认服务和端口是否开放
- 第5步:其他配置错误等,例如网卡服务等
2.6.2 故障排查案例
假设远程Linux服务器的IP地址为10.0.0.200,现在要进行连接故障排查。
- 利用ping命令检查连通性(客户端执行)
ping 10.0.0.200 #<== 此命令适合Linux和Windows
这里通过ping命令从客户端发包到服务器,看看是否有数据包返回,从而确定物理链路是否通畅。
提示:也可以通过
tracert-d 10.0.0.200
(仅适合于Windows)或traceroute 10.0.0.200 -n
(适合于Linux)命令跟踪路由情况,这两个跟踪路由的命令一般用于广域网。
如果ping不通,可能是因为以下几点原因。
1)对应网卡是否激活(很多人在安装系统时没有勾选网卡开机自启动)。 2)网卡对应的IP是否配置正确。 3)虚拟机的网卡是不是桥接模式。
- 检查firewalld等防火墙策略是否阻挡了连接(服务端执行)
systemctl status firewalld
- 利用telnet或nmap命令检查(客户端执行)
telnet 10.0.0.200 22 nmap 10.0.0.200 -p 22 #<== 仅适合Linux,需要安装该软件包后才能使用。
通过该命令可以查看连接服务器端10.0.0.200的22端口是不是开通状态,因为SSH服务默认开启的是22端口。
- 系统中的SSHD服务是否正常开启,端口是否正确
[root@localhost ~]# netstat -lntup|grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7337/sshd tcp6 0 0 :::22 :::* LISTEN 7337/sshd
- 检查连接的客户端,例如Xshell连接的IP、端口、协议等是否填写正确。
3. 图形化远程连接
日常工作中,大多数Linux服务器往往只通过命令行连接交互管理,但是图形化界面可以使运维管理工作更加直观和遍历,所以在安装的时候往往会选择将图形化界面一起安装上。在远程的时候可以选择SSH命令行连接,有需要的时候也会进行图形化连接。
3.1 安装图形化界面
在Linux系统中安装图形化桌面环境可以让用户通过一个友好的界面来操作计算机。但是服务器版本往往默认没有安装图形化桌面环境,所以提供一些常用的Linux发行版的安装图形化桌面方法,以供参考。
3.1.1 Debian系
对于基于Debian的发行版(如Ubuntu),可以使用apt包
管理器来安装图形化桌面。
# 安装GNOME桌面环境 sudo apt install -y ubuntu-desktop # 安装Xfce桌面环境 sudo apt install -y xubuntu-desktop # 安装KDE Plasma桌面环境 sudo apt install -y kubuntu-desktop # 后续操作 startx # 切换到GUI 或者 reboot # 直接重启
3.1.2 红帽系
对于基于Red Hat的发行版(如CentOS、RHEL),可以使用yum或dnf包
管理器来安装图形化桌面。
# 安装GNOME桌面环境 yum groupinstall -y 'GNOME Desktop' # 安装Xfce桌面环境 yum groupinstall -y 'Xfce' # 安装KDE Plasma桌面环境 yum groupinstall -y 'KDE Plasma Workspaces' # 后续操作 systemctl isolate graphical.target # 立即切换到GUI # 或者 systemctl set-default graphical.target # 修改默认启动方式 systemctl get-default # 查看 reboot # 重启
3.2 VNC远程连接
VNC(Virtual Network Computing)是一种图形桌面共享系统,它允许您远程控制另一台计算机。在Linux操作系统中配置 VNC 远程连接还是比较简单的,只需要配置好本地 yum 源,然后安装上 tigervnc
和 tigervnc-server
安装包即可。这里使用CentOS7环境进行演示。
- 首先,查看有没有预先安装 vnc 服务:
# 未安装 [root@localhost ~]# which vncserver /usr/bin/which: no vncserver in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) # 已安装 [root@localhost ~]# which vncserver /usr/bin/vncserver
- 安装 vnc 服务
# 未安装 [root@localhost ~]# yum search tigervnc --showduplicates //查看本地 yum 源提供的 vnc 版本。 [root@localhost ~]# yum -y install tigervnc*
- 服务端启用 VNC 远程连接
# 启动配置连接 root@localhost ~]# vncserver warning: localhost.localdomain:1 is taken because of /tmp/. x1-lock Remove this file if there is no x server localhost.localdomain:1 You will require a password to access your desktops. Password: # 设置vnc远程连接时需要验证的密码 verify: would you like to enter a view- only password (y/n)? n New 'localhost.localdomain:1 ( root)' desktop is localhost.localdomain:1 creating default startup script / root / . vnc/xstartup creating default config / root/.vnc / config Starting applications specified in' /root/ .vnc/ xstartupLog file is /root / . vnc/localhost.localdomain: 1.log # 查看当前启动的vncserver信息 [root@localhost ~]# vncserver -list TigerVNC server sessions: X DISPLAY # PROCESS ID :1 8881
- 启动使用客户端进行连接
这里使用的是RealVNC客户端,客户端可以根据自身的情况自行选择。
输入在服务器端启动 vnc 服务时所设置的密码:
此时,我们就可以远程访问服务器的图形化桌面啦:
3.3 X11远程连接
三角标记图标
是预置的部分命令,我们也可以在这个里添加自己的命令。
- 点击‘添加’,名称填写
gdm
,命令填写/etc/gdm/Xsession
- 点击‘高级’,再点击‘配置’
- 窗口模式选择
Single Window Mode(单一窗口模式)
之后,点击‘设置’
- 窗口大小根据实际情况进行选择
- 最后点击运行执行。
- 连接图形化界面
3.4 RDP远程连接
在Linux系统上使用RDP(远程桌面协议)进行远程连接,通常需要安装特定的服务端软件来支持RDP协议。最常用的开源解决方案是xRDP和TigerVNC配合使用,或者是直接使用微软的RDP服务实现(但这比较少见于Linux环境)。
- 先更新一下包
yum update -y
- 然后安装XRDP并启动XRDP服务
yum install xrdp -y systemctl enable xrdp systemctl start xrdp
- windows端测试XRDP连接,使用远程连接测试
- 输入用户名root和服务器密码,点击ok连接CentOS 7服务器
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122116.html