Ubuntu 22.04 网络服务安装配置
一键安装所有服务
# 更新系统
sudo apt update# 安装所有服务
sudo apt install -y openssh-server vsftpd telnetd inetutils-inetd ftp telnet# 启动所有服务
sudo systemctl start ssh vsftpd inetutils-inetd
sudo systemctl enable ssh vsftpd inetutils-inetd# 配置防火墙
sudo ufw allow ssh
sudo ufw allow 21/tcp
sudo ufw allow 23/tcp
sudo ufw allow 10000:10100/tcp# 查看服务状态
sudo systemctl status ssh vsftpd inetutils-inetd
服务端口对照表
服务 | 端口 | 安全性 | 用途 |
---|---|---|---|
SSH | 22 | ✅ 安全 | 远程登录、文件传输 |
FTP | 21 | ⚠️ 不安全 | 文件传输 |
Telnet | 23 | ❌ 不安全 | 远程登录(调试用) |
SFTP | 22 | ✅ 安全 | 基于SSH的文件传输 |
SCP | 22 | ✅ 安全 | 基于SSH的文件复制 |
快速测试命令
安装完成后,可以用这些命令测试:
# 测试 SSH
ssh $USER@localhost# 测试 FTP
ftp localhost# 测试 Telnet
telnet localhost# 测试 SFTP
sftp $USER@localhost# 查看所有监听端口
sudo netstat -tlnp | grep -E ':(21|22|23) '
- 生产环境建议:只启用 SSH,禁用 FTP 和 Telnet
- FTP 安全:配置 FTPS (FTP over SSL) 加密传输
- SSH 加固:修改默认端口、禁用 root 登录、使用密钥认证
推荐使用顺序:SSH/SFTP > FTPS > FTP > Telnet
SSH 服务 (推荐优先配置)
安装 SSH 服务
# 更新软件包列表
sudo apt update# 安装 OpenSSH 服务器
sudo apt install -y openssh-server# 启动 SSH 服务
sudo systemctl start ssh# 设置开机自启动
sudo systemctl enable ssh# 查看服务状态
sudo systemctl status ssh
配置 SSH 服务
# 编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config# 主要配置项:
# Port 22 # SSH 端口号
# PermitRootLogin no # 禁止 root 直接登录(推荐)
# PasswordAuthentication yes # 允许密码认证
# PubkeyAuthentication yes # 允许公钥认证
# X11Forwarding yes # 允许 X11 转发
重启 SSH 服务使配置生效
sudo systemctl restart ssh
防火墙配置
# 允许 SSH 通过防火墙
sudo ufw allow ssh
# 或者
sudo ufw allow 22/tcp
测试 SSH 连接
# 本地测试
ssh username@localhost# 远程测试(从其他机器)
ssh username@your_server_ip
SFTP 和 SCP 服务
注意:SFTP 和 SCP 基于 SSH,安装 SSH 后自动可用
测试 SFTP
# 连接到 SFTP
sftp username@localhost# SFTP 常用命令:
# put localfile # 上传文件
# get remotefile # 下载文件
# ls # 列出远程目录
# lls # 列出本地目录
# pwd # 显示远程当前目录
# lpwd # 显示本地当前目录
# quit # 退出
测试 SCP
# 上传文件到远程服务器
scp localfile.txt username@remote_host:/path/to/destination/# 从远程服务器下载文件
scp username@remote_host:/path/to/file.txt /local/destination/# 上传目录
scp -r local_directory/ username@remote_host:/remote/path/# 下载目录
scp -r username@remote_host:/remote/directory/ /local/path/
FTP 服务
安装 vsftpd (Very Secure FTP Daemon)
# 安装 vsftpd
sudo apt install -y vsftpd# 启动服务
sudo systemctl start vsftpd# 设置开机自启动
sudo systemctl enable vsftpd# 查看服务状态
sudo systemctl status vsftpd
配置 FTP 服务
# 备份原配置文件
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak# 编辑配置文件
sudo nano /etc/vsftpd.conf
重要配置项:
# 基本配置
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES# 安全配置
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
force_dot_files=YES# 被动模式配置
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100# 用户配置
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
创建 FTP 用户
# 创建 FTP 用户列表文件
sudo nano /etc/vsftpd.userlist# 在文件中添加允许访问的用户名
echo "your_username" | sudo tee -a /etc/vsftpd.userlist
重启 FTP 服务
sudo systemctl restart vsftpd
防火墙配置
# 允许 FTP 通过防火墙
sudo ufw allow 21/tcp
sudo ufw allow 10000:10100/tcp # 被动模式端口范围
测试 FTP 连接
# 安装 FTP 客户端
sudo apt install -y ftp# 连接测试
ftp localhost
# 输入用户名和密码# FTP 常用命令:
# ls # 列出远程目录
# cd directory # 切换远程目录
# lcd directory # 切换本地目录
# put localfile # 上传文件
# get remotefile # 下载文件
# mput file1 file2 # 批量上传
# mget file1 file2 # 批量下载
# quit # 退出
Telnet 服务
安装 Telnet 服务器
# 安装 telnet 服务器
sudo apt install -y telnetd# 安装 inetd 超级服务器
sudo apt install -y inetutils-inetd# 启动服务
sudo systemctl start inetutils-inetd# 设置开机自启动
sudo systemctl enable inetutils-inetd
配置 Telnet 服务
# 检查 telnet 配置
sudo nano /etc/inetd.conf# 确保包含这行(通常已存在):
# telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
重启服务
sudo systemctl restart inetutils-inetd
防火墙配置
# 允许 Telnet 通过防火墙
sudo ufw allow 23/tcp
测试 Telnet 连接
# 安装 telnet 客户端(如果没有)
sudo apt install -y telnet# 连接测试
telnet localhost
# 或
telnet your_server_ip
安全建议
SSH 安全加固
# 1. 修改默认端口
sudo nano /etc/ssh/sshd_config
# 修改:Port 2222# 2. 禁用 root 登录
# 修改:PermitRootLogin no# 3. 只允许特定用户
# 添加:AllowUsers username1 username2# 4. 启用密钥认证,禁用密码认证
# 修改:PasswordAuthentication no
# 修改:PubkeyAuthentication yes# 5. 重启服务
sudo systemctl restart ssh
FTP 安全加固
# 1. 启用 TLS/SSL (FTPS)
sudo nano /etc/vsftpd.conf# 添加以下配置:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH# 2. 生成 SSL 证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/vsftpd.pem \-out /etc/ssl/private/vsftpd.pem# 3. 在配置文件中指定证书路径
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
🔍 服务管理命令
统一管理命令
# 查看所有服务状态
sudo systemctl status ssh vsftpd inetutils-inetd# 启动所有服务
sudo systemctl start ssh vsftpd inetutils-inetd# 停止所有服务
sudo systemctl stop ssh vsftpd inetutils-inetd# 重启所有服务
sudo systemctl restart ssh vsftpd inetutils-inetd# 设置开机自启动
sudo systemctl enable ssh vsftpd inetutils-inetd
查看端口占用情况
# 查看所有监听端口
sudo netstat -tlnp# 查看特定端口
sudo netstat -tlnp | grep :22 # SSH
sudo netstat -tlnp | grep :21 # FTP
sudo netstat -tlnp | grep :23 # Telnet
查看服务日志
# SSH 日志
sudo journalctl -u ssh -f# FTP 日志
sudo journalctl -u vsftpd -f
sudo tail -f /var/log/vsftpd.log# Telnet 日志
sudo journalctl -u inetutils-inetd -f
重要安全提醒
- SSH - 最安全,推荐用于远程管理
- SFTP/SCP - 安全的文件传输,推荐使用
- FTP - 传输不加密,仅在内网使用或配置FTPS
- Telnet - 完全不加密,仅用于调试或内网环境
建议优先级:SSH/SFTP > FTPS > FTP > Telnet