六、Linux远程管理

wangzhaoyang 发布于 15 天前 31 次阅读 网络工程中的Linux系统 无~ 2787 字


Linux远程管理是指通过网络对Linux系统进行操作和管理的过程。常见的远程管理工具有SSH、VNC、RDP等,下面是一些常用的远程管理方法及其配置和使用。

1. SSH(Secure Shell)

SSH 是最常用的远程管理工具,基于加密的协议,保证了数据传输的安全性。通过 SSH,可以执行远程命令、上传下载文件、管理系统等。

安装 SSH 服务(在服务器端)
   [root@localhost ~]# dnf install openssh-server  # CentOS 8
   [root@localhost ~]# apt-get install openssh-server  # Ubuntu/Debian
启动 SSH 服务
   [root@localhost ~]# systemctl start sshd
   [root@localhost ~]# systemctl enable sshd
检查 SSH 服务状态
   [root@localhost ~]# systemctl status sshd
配置 SSH(/etc/ssh/sshd_config 文件解析与调优)

/etc/ssh/sshd_config 是 SSH 服务器的主配置文件。根据安全性、性能和易用性需求,可以对这个文件进行配置调优。常见的配置项及其调优建议如下:

  • PermitRootLogin
  • 作用:控制是否允许 root 用户通过 SSH 登录。
  • 调优建议:为了增强安全性,建议设置为 no,禁止 root 用户直接登录,避免暴力破解。 PermitRootLogin no
  • PasswordAuthentication
  • 作用:启用或禁用基于密码的身份验证。
  • 调优建议:建议设置为 no,并通过 SSH 密钥认证来提高安全性。 PasswordAuthentication no
  • ChallengeResponseAuthentication
  • 作用:启用或禁用挑战响应身份验证(如基于 OTP 的认证)。
  • 调优建议:为了避免不必要的安全风险,通常关闭此选项。 ChallengeResponseAuthentication no
  • UsePAM
  • 作用:启用或禁用基于 PAM(Pluggable Authentication Modules)的认证。
  • 调优建议:如果不需要 PAM 的额外功能,可以禁用。 UsePAM yes
  • AllowUsersDenyUsers
  • 作用:指定允许或禁止登录的用户。
  • 调优建议:可以限制只有指定的用户可以通过 SSH 登录,提高安全性。 AllowUsers username1 username2
  • MaxAuthTries
  • 作用:限制在认证失败后允许的最大尝试次数。
  • 调优建议:减少此值可以增加系统的安全性,避免暴力破解攻击。 MaxAuthTries 3
  • PermitEmptyPasswords
  • 作用:是否允许空密码登录。
  • 调优建议:出于安全考虑,建议禁用空密码登录。 PermitEmptyPasswords no
  • UseDNS
  • 作用:是否使用 DNS 查找远程主机名。
  • 调优建议:为了提高登录速度,建议禁用此项(如果你不需要主机名反向查找)。 UseDNS no
  • LogLevel
  • 作用:设置日志级别。
  • 调优建议:根据需要设置日志详细程度。通常可以设置为 INFOVERBOSE 来记录较详细的日志,便于排查问题。 LogLevel VERBOSE
  • TCPKeepAlive
  • 作用:设置 SSH 会话的 TCP 保活选项。
  • 调优建议:建议设置为 yes,以确保 SSH 会话在网络中断时能及时检测到并关闭。 TCPKeepAlive yes
  • ClientAliveIntervalClientAliveCountMax
  • 作用:控制服务器发送的保持活动消息的间隔时间和最大重试次数。
  • 调优建议:适当设置这两个参数,可以防止死连接长时间占用资源。
    bash ClientAliveInterval 300 ClientAliveCountMax 3

修改配置后,重新启动 SSH 服务以应用更改:

[root@localhost ~]# systemctl restart sshd
远程登录到 Linux 主机(客户端)

使用 ssh 命令:

   [root@localhost ~]# ssh username@hostname_or_ip

如果远程主机使用非默认端口(默认是 22),可以指定端口:

   [root@localhost ~]# ssh -p port_number username@hostname_or_ip
通过 SSH 密钥进行无密码登录
  1. 生成 SSH 密钥对
    在本地计算机上使用以下命令生成 SSH 密钥对: [root@localhost ~]# ssh-keygen -t rsa -b 2048
  2. 将公钥复制到远程主机
    使用 ssh-copy-id 命令将本地生成的公钥复制到远程主机: [root@localhost ~]# ssh-copy-id username@hostname_or_ip
  3. 验证无密码登录
    复制完公钥后,再次使用 SSH 登录时,应该就不需要输入密码:
    bash [root@localhost ~]# ssh username@hostname_or_ip

2. VNC(Virtual Network Computing)

VNC 是一种基于图形界面的远程控制工具,可以实现类似桌面共享的功能。

安装 VNC 服务
  1. 安装 VNC 服务器软件,例如 TigerVNC
   [root@localhost ~]# dnf install tigervnc-server  # CentOS 8
   [root@localhost ~]# apt-get install tigervnc-standalone-server  # Ubuntu/Debian
  1. 配置 VNC 服务器
    VNC 服务器配置文件通常存放在 ~/.vnc 目录下。你需要创建一个新的 VNC 密码,并启动 VNC 服务器。 设置 VNC 密码:
   [root@localhost ~]# vncpasswd

启动 VNC 服务:

   [root@localhost ~]# vncserver
  1. 配置 VNC 启动脚本
    配置 VNC 启动脚本,编辑 ~/.vnc/xstartup 文件,确保以下内容存在:
   [root@localhost ~]# vi ~/.vnc/xstartup
   #!/bin/sh
   unset SESSION_MANAGER
   exec /etc/X11/xinit/xinitrc
  1. 启动 VNC 服务
    启动 VNC 服务并设置为开机自启:
   [root@localhost ~]# vncserver :1

此时,VNC 服务默认会监听端口 5901(对于 :1 的显示)。

  1. 连接到远程主机
    使用 VNC 客户端(如 RealVNC、TightVNC、TigerVNC 等)连接到远程主机,地址格式为:
   hostname_or_ip:1

输入你设置的密码即可。

3. RDP(Remote Desktop Protocol)

RDP 是 Windows 系统使用的远程桌面协议,Linux 也可以通过安装 xrdp 来提供类似的功能。

安装 xrdp 服务
  1. 安装 xrdp:
   [root@localhost ~]# dnf install xrdp  # CentOS 8
   [root@localhost ~]# apt-get install xrdp  # Ubuntu/Debian
  1. 启动并配置 xrdp 服务:
   [root@localhost ~]# systemctl start xrdp
   [root@localhost ~]# systemctl enable xrdp
  1. 配置防火墙以允许 RDP 连接:
   [root@localhost ~]# firewall-cmd --add-port=3389/tcp --permanent
   [root@localhost ~]# firewall-cmd --reload
  1. 使用 RDP 客户端连接
    在 Windows 或其他支持 RDP 协议的客户端(如 `Remote Desktop ConnectionRemmina)中输入 Linux 主机的 IP 地址,端口为3389`。

4. Web 控制面板(Webmin)

Webmin 是一个基于 Web 的系统管理工具,允许通过浏览器进行系统管理。

安装 Webmin
  1. 安装依赖:
   [root@localhost ~]# dnf install perl
  1. 下载并安装 Webmin:
   [root@localhost ~]# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.973-1.noarch.rpm
   [root@localhost ~]# rpm -U webmin-1.973-1.noarch.rpm
  1. 启动并配置 Webmin 服务:
   [root@localhost ~]# systemctl start webmin
   [root@localhost ~]# systemctl enable webmin
  1. 访问 Webmin
    打开浏览器,访问:
   https://hostname_or_ip:10000

默认的用户名是 root,密码是系统的 root 密码。

5. 远程文件管理(SFTP/FTP)

SFTP(SSH File Transfer Protocol)

SFTP 是基于 SSH 协议的文件传输协议,提供加密的文件传输方式。可以通过命令行或图形化客户端(如 FileZilla)来使用。

  • 连接到远程主机:
  [root@localhost ~]# sftp username@hostname_or_ip
  • 上传文件:
  [root@localhost ~]# put local_file_path remote_file_path
  • 下载文件:
  [root@localhost ~]# get remote_file_path local_file_path

FTP(File Transfer Protocol)

FTP 是一种不加密的文件传输协议,虽然速度较快,但不适合在不安全的网络环境中使用。可以使用 vsftpdproftpd 等服务来搭建 FTP 服务器。

6. 管理日志文件

在 Linux 系统中,日志文件对于远程管理非常重要。可以使用以下方法查看和分析日志文件:

  • 查看日志:
  [root@localhost ~]# tail -f /var/log/messages
  [root@localhost ~]# tail -f /var/log/syslog
  • 查找特定日志:
  [root@localhost ~]# grep "error" /var/log/syslog

7. 安全考虑

  • 使用强密码,并定期更换。
  • 禁用 root 用户远程登录,使用普通用户登录后再通过 sudo 提升权限。
  • 配置防火墙,限制远程访问 IP 范围。
  • 启用 Fail2ban 或类似工具防止暴力破解攻击。
  • 使用 VPN 或 IPsec 来保护远程连接的安全性。

SSH 互信配置笔

1. 目标

通过配置 SSH 互信,使主机 A(如 192.168.1.10)能够无密码登录到主机 B(如 192.168.1.20)。


2. 环境准备

  1. 软件环境
  • 两台主机都已安装 OpenSSH 服务。
  • 使用默认端口 22 或指定的自定义端口。
  1. 权限要求
  • 需要对两台主机具有 root 或普通用户的登录权限。
  1. 测试连通性
  • 确保主机 A 能 ping 通主机 B: [root@localhost ~]# ping 192.168.1.20
  • 若网络未通,请检查网络配置、路由和防火墙。

3. 配置步骤

3.1 主机 A:生成 SSH 密钥对

在主机 A 上执行以下命令生成 SSH 密钥对:

[root@localhost ~]# ssh-keygen -t rsa -b 2048 -C "A_to_B_key"
  • -t rsa:指定生成 RSA 类型的密钥。
  • -b 2048:密钥长度 2048 位。
  • -C "A_to_B_key":添加注释以便区分。

提示响应:

  • 保存路径:直接回车使用默认路径 /root/.ssh/id_rsa
  • 密码短语:如果不需要,请直接回车。

生成完成后会在 /root/.ssh 下生成以下文件:

  • id_rsa:私钥文件。
  • id_rsa.pub:公钥文件。
3.2 主机 A:将公钥传输到主机 B

使用以下命令将公钥传输到主机 B 的授权密钥文件中:

[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.20

系统提示:

  • 会要求输入主机 B 的 root 用户密码。
  • 成功后,公钥会被自动添加到主机 B 的 /root/.ssh/authorized_keys 文件中。

如果 ssh-copy-id 无法使用,也可以手动传输公钥:

[root@localhost ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.20:/root/.ssh/temp_key.pub

然后在主机 B 上将其追加到 authorized_keys 文件中:

[root@localhost ~]# cat /root/.ssh/temp_key.pub >> /root/.ssh/authorized_keys
[root@localhost ~]# rm /root/.ssh/temp_key.pub
3.3 主机 B:检查授权密钥文件权限

在主机 B 上,确保 ~/.ssh 文件夹和 authorized_keys 文件权限正确:

[root@localhost ~]# chmod 700 ~/.ssh
[root@localhost ~]# chmod 600 ~/.ssh/authorized_keys
3.4 验证互信配置

在主机 A 上,尝试通过 SSH 登录到主机 B:

[root@localhost ~]# ssh root@192.168.1.20

如果无需输入密码即登录成功,则配置完成。


4. 验证及优化

4.1 验证密钥登录是否启用

在主机 B 上检查 SSH 配置文件 /etc/ssh/sshd_config

[root@localhost ~]# grep -i pubkeyauth /etc/ssh/sshd_config

确认以下配置已启用:

PubkeyAuthentication yes
4.2 重启 SSH 服务

如果修改了 sshd_config,需重启服务以生效:

[root@localhost ~]# systemctl restart sshd
4.3 调整 SELinux 和防火墙

如果遇到无法登录问题,可能是 SELinux 或防火墙限制了 SSH 服务。

临时关闭 SELinux:

[root@localhost ~]# setenforce 0

检查防火墙:

[root@localhost ~]# firewall-cmd --list-all
[root@localhost ~]# firewall-cmd --permanent --add-service=ssh
[root@localhost ~]# firewall-cmd --reload

5. 常见问题及解决方法

  1. 登录时仍需输入密码:
  • 检查主机 B 的 /root/.ssh/authorized_keys 文件中是否存在正确的公钥。
  • 确认公钥和文件夹权限是否正确。
  • 查看主机 B 的 SSH 日志: [root@localhost ~]# tail -f /var/log/secure
  1. 公钥传输失败:
  • 检查主机 B 是否允许 SSH 登录,以及防火墙或端口配置是否阻止连接。
  1. 权限不足:
  • 确保 .ssh 目录和文件仅对文件所有者有读写权限。

6. 补充

如果需要配置多个用户的互信,可以为每个用户单独生成密钥并传输公钥。