如何在本地网络上使用 SSH

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本全面教程探讨了本地网络环境中 SSH(安全外壳协议)的配置和使用,重点是 Linux 系统。该指南面向系统管理员和开发人员,提供了有关使用 SSH 协议建立安全、高效远程连接的实用见解和最佳实践。

SSH 基础

什么是 SSH?

SSH(安全外壳协议)是一种加密网络协议,可通过不安全的网络在计算机之间实现安全的远程访问和通信。它为执行命令、传输文件和管理网络设备提供了一个安全通道。

SSH 的关键特性

SSH 提供了几个关键的安全特性:

特性 描述
加密 使用强大的加密算法保护数据传输
认证 通过密码或加密密钥验证用户身份
完整性 确保数据在传输过程中未被篡改

SSH 连接工作流程

graph LR A[客户端] -->|发起连接| B[SSH 服务器] B -->|密钥交换| A A -->|认证| B B -->|安全通道建立| A

SSH 认证方法

  1. 密码认证

    • 简单但安全性较低
    • 容易受到暴力攻击
  2. 公钥认证

    • 更安全的方法
    • 使用加密密钥对

SSH 基本命令结构

ssh username@hostname

SSH 的关键组件

  • SSH 客户端:用于连接到远程系统的软件
  • SSH 服务器:监听传入连接的守护进程
  • SSH 密钥:用于安全认证的加密密钥

SSH 的使用场景

  • 远程服务器管理
  • 安全文件传输
  • 网络流量隧道
  • 自动化脚本执行

SSH 安全最佳实践

  • 使用基于密钥的认证
  • 禁用 root 登录
  • 配置防火墙规则
  • 定期更新 SSH 软件

在 LabEx,我们建议将掌握 SSH 作为 Linux 系统管理员和网络专业人员的一项基本技能。

本地网络配置

网络前提条件

识别本地网络设备

## 列出网络接口
ip addr show

## 发现网络设备
sudo nmap -sn 192.168.1.0/24

SSH 服务器安装

安装 OpenSSH 服务器

## 更新软件包列表
sudo apt update

## 安装 SSH 服务器
sudo apt install openssh-server

## 验证 SSH 服务状态
sudo systemctl status ssh

网络配置步骤

1. 配置 SSH 服务器

## 编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config

SSH 配置参数

参数 推荐设置 目的
端口 22 或自定义端口 网络访问点
允许 root 登录 no 增强安全性
密码认证 no 强制使用基于密钥的认证

2. 防火墙配置

## 通过 UFW 允许 SSH
sudo ufw allow ssh

## 启用防火墙
sudo ufw enable

本地网络 SSH 连接工作流程

graph TD A[本地机器] -->|SSH 连接| B[目标机器] B -->|认证| A A -->|安全外壳会话| B

IP 地址配置

静态 IP 与动态 IP

## 检查当前 IP 配置
ip addr show

## 配置静态 IP(示例)
sudo nano /etc/netplan/01-netcfg.yaml

SSH 密钥生成

## 生成 SSH 密钥对
ssh-keygen -t rsa -b 4096

## 将公钥复制到远程机器
ssh-copy-id username@remote_host

网络问题排查

常见的 SSH 连接问题

  • 防火墙阻止端口
  • 网络配置不正确
  • SSH 服务未运行

安全注意事项

  • 使用非标准 SSH 端口
  • 实施 fail2ban
  • 定期进行系统更新

在 LabEx,我们强调安全高效的本地网络 SSH 配置对于无缝远程访问和管理的重要性。

安全的 SSH 实践

认证强化

基于密钥的认证

## 生成 SSH 密钥对
ssh-keygen -t ed25519 -f ~/.ssh/labex_key

## 将公钥复制到远程服务器
ssh-copy-id -i ~/.ssh/labex_key.pub username@remote_host

禁用密码认证

## 编辑 SSH 配置
sudo nano /etc/ssh/sshd_config

## 设置这些参数
PasswordAuthentication no
PermitRootLogin no

高级安全配置

SSH 配置最佳实践

安全参数 推荐设置 目的
协议 2 使用最新的 SSH 协议
最大认证尝试次数 3 限制登录尝试次数
允许的用户 特定用户列表 限制用户访问

防火墙与入侵防范

UFW 配置

## 配置防火墙
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw enable

实施 Fail2Ban

## 安装 Fail2Ban
sudo apt install fail2ban

## 为 SSH 配置 jail
sudo nano /etc/fail2ban/jail.local

SSH 连接工作流程安全

graph TD A[客户端] -->|加密连接| B[SSH 服务器] B -->|密钥认证| A A -->|受限访问| B

高级加密技术

密码和 MAC 配置

## 推荐的 SSH 密码
Ciphers [email protected],[email protected]
MACs [email protected]

监控与日志记录

SSH 访问跟踪

## 查看 SSH 登录尝试
sudo tail -f /var/log/auth.log

## 监控当前连接
who

其他安全工具

  • SSH 端口敲门
  • 双因素认证
  • VPN 集成

定期维护

更新与打补丁

## 定期系统更新
sudo apt update
sudo apt upgrade
sudo systemctl restart ssh

安全审计工具

推荐的扫描工具

  • OpenVAS
  • Lynis
  • ClamAV

在 LabEx,我们强调持续学习并实施强大的 SSH 安全实践,以保护你的网络基础设施。

总结

通过掌握本地网络上的 SSH 技术,Linux 用户可以增强系统连接性、提升远程管理能力并实施强大的安全措施。本教程为专业人员提供了在基于 Linux 的基础设施上创建可靠且安全的网络通信所需的基本知识。