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

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

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

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

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

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

相关推荐
GeW6 小时前
新质生产力路线图Linux、数据库、国产化替代一次讲透
linux
aningx8 小时前
cachyos 从 GRUB 切换到 rEFInd
linux
第404号工位9 小时前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js
对象存储与RustFS9 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
骑着蜗牛撵大象32711 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
众壹新能源科技11 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
..Dauntless..11 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划11 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
QMCY_jason11 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特12 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器