Linux SSH服务端配置指南

前言

本文档详细介绍了如何在本地Linux系统上配置SSH服务端,使其能够接受远程连接。内容涵盖安装配置、安全优化、故障排查等关键环节,适合系统管理员和开发人员参考。

1. SSH服务端基础配置

1.1 安装OpenSSH服务端

问题:如何在Ubuntu系统上安装SSH服务端?

解答:

复制代码
# 更新软件包列表
sudo apt update
​
# 安装OpenSSH服务端
sudo apt install -y openssh-server
​
# 启动SSH服务并设置开机自启
sudo systemctl enable ssh
sudo systemctl start ssh

1.2 基础配置文件修改

问题:SSH服务端的主要配置文件是什么?

解答: SSH服务端的主要配置文件位于 /etc/ssh/sshd_config。建议在修改前先备份原始配置:

复制代码
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2. 安全配置优化

2.1 修改默认配置

问题:如何优化SSH服务端的安全配置?

解答:

复制代码
# 编辑配置文件
sudo nano /etc/ssh/sshd_config
​
# 推荐的安全配置
Port 22
PermitRootLogin prohibit-password
PasswordAuthentication yes
PubkeyAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
ClientAliveInterval 60
ClientAliveCountMax 3

2.2 防火墙配置

问题:如何配置防火墙以允许SSH连接?

解答:

复制代码
# 使用UFW防火墙
sudo ufw allow 22/tcp
sudo ufw enable
​
# 或使用iptables
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. 一键部署脚本

3.1 完整部署脚本

问题:能否提供一键部署SSH服务端的脚本?

解答:

复制代码
#!/bin/bash
# Ubuntu一键配置SSH服务端脚本
​
# 安装OpenSSH服务端
sudo apt update
sudo apt install -y openssh-server
​
# 备份原始配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)
​
# 写入优化配置
sudo cat << 'EOF' | sudo tee /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
Protocol 2
PermitRootLogin prohibit-password
PasswordAuthentication yes
PubkeyAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
ClientAliveInterval 60
ClientAliveCountMax 3
X11Forwarding yes
PrintMotd no
LogLevel INFO
EOF
​
# 启动服务
sudo systemctl enable ssh
sudo systemctl start ssh
​
# 配置防火墙
if command -v ufw &> /dev/null; then
    sudo ufw allow 22/tcp
    sudo ufw --force enable
fi
​
echo "SSH服务端配置完成!"

4. 常用命令速查

4.1 服务管理命令

问题:常用的SSH服务管理命令有哪些?

解答:

复制代码
# 启动SSH服务
sudo systemctl start ssh
​
# 停止SSH服务
sudo systemctl stop ssh
​
# 重启SSH服务
sudo systemctl restart ssh
​
# 查看服务状态
sudo systemctl status ssh
​
# 设置开机自启
sudo systemctl enable ssh
​
# 禁用开机自启
sudo systemctl disable ssh

4.2 连接测试命令

问题:如何测试SSH连接?

解答:

复制代码
# 本地测试连接
ssh localhost
​
# 远程连接测试
ssh username@remote_ip
​
# 指定端口连接
ssh -p 2222 username@remote_ip
​
# 使用指定密钥连接
ssh -i ~/.ssh/id_rsa username@remote_ip

5. 故障排查

5.1 常见问题处理

问题:SSH连接失败的常见原因有哪些?

解答:

1. 服务未启动

复制代码
# 检查服务状态
sudo systemctl status ssh
​
# 启动服务
sudo systemctl start ssh

2. 防火墙阻止

复制代码
# 检查防火墙状态
sudo ufw status
​
# 放行SSH端口
sudo ufw allow 22/tcp

3. 配置文件错误

复制代码
# 检查配置文件语法
sudo sshd -t
​
# 查看错误日志
sudo journalctl -u ssh -f

5.2 端口监听检查

问题:如何检查SSH端口是否正常监听?

解答:

复制代码
# 使用netstat检查
sudo netstat -tlnp | grep sshd
​
# 使用ss命令检查
sudo ss -tlnp | grep sshd
​
# 检查特定端口
sudo lsof -i :22

6. 安全加固建议

6.1 进一步安全配置

问题:如何进一步提升SSH服务的安全性?

解答:

1. 禁用密码登录

复制代码
# 编辑配置文件
sudo nano /etc/ssh/sshd_config
​
# 修改配置
PasswordAuthentication no
​
# 重启服务
sudo systemctl restart ssh

2. 修改默认端口

复制代码
# 编辑配置文件
sudo nano /etc/ssh/sshd_config
​
# 修改端口
Port 2222
​
# 重启服务
sudo systemctl restart ssh
​
# 更新防火墙规则
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp

3. 安装Fail2Ban

复制代码
# 安装Fail2Ban
sudo apt install -y fail2ban
​
# 启动服务
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

6.2 密钥认证配置

问题:如何配置SSH密钥认证?

解答:

1. 生成密钥对

复制代码
# 在客户端生成密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
​
# 或使用RSA
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. 上传公钥

复制代码
# 使用ssh-copy-id
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_ip
​
# 手动上传
cat ~/.ssh/id_ed25519.pub | ssh username@remote_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

7. 总结

本文档详细介绍了Linux系统上SSH服务端的配置方法,从基础安装到安全优化,再到故障排查,为读者提供了完整的配置指南。通过本文档的学习,读者应该能够熟练配置和管理Linux系统的SSH服务,确保远程连接的安全性和可靠性。

关键要点回顾:

  • SSH服务端配置文件为 /etc/ssh/sshd_config

  • 修改配置后需要重启服务生效

  • 防火墙配置是确保连接成功的重要环节

  • 密钥认证比密码认证更安全

  • 定期检查日志和更新配置是维护安全的关键

希望本文档对您的工作有所帮助!

相关推荐
liuccn1 小时前
Linux 存储系统:LVM 与直接分区
linux·运维
捷配链1 小时前
六层服务器板行业材料与工艺标准化选型指南
服务器·制造·pcb
xexpertS3 小时前
CI/CD 熔断机制:如何通过编排级熔断器提升开发者效率
java·linux·运维
xuefeiniao3 小时前
CentOS + 宝塔服务器偶发 SSH、面板、网站全部无法访问排查记录(PHP-FPM 内存耗尽案例)
服务器·centos·ssh·php
带娃的IT创业者4 小时前
突破内存瓶颈:利用 Nvidia GPU 显存作为 Linux Swap 空间的深度实践
linux·运维·服务器·nvidia·swap·gpu显存
zy happy4 小时前
VMware虚拟机添加新的硬盘
java·linux·jvm·docker
LCG元4 小时前
嵌入式开发踩坑排查实战:从 STM32 外设初始化到 Linux SPI 驱动的 15 类硬件疑难故障深度复盘
linux·stm32·单片机
FoldWinCard4 小时前
云原生 --- lvs
运维·服务器·lvs
代码AC不AC4 小时前
【Linux】Socket编程TCP
linux·tcp·socket编程
扛枪的书生4 小时前
SeaweedFS 学习总结
linux