如何在Linux系统中配置openSSH

发布时间:2022-01-26 17:23:51 作者:柒染
来源:亿速云 阅读:175
# 如何在Linux系统中配置OpenSSH

## 1. OpenSSH简介

OpenSSH(Open Secure Shell)是SSH协议的开源实现,用于安全地远程登录和管理Linux/Unix系统。作为传统不安全的telnet和rlogin工具的替代品,OpenSSH提供加密的通信通道,防止信息泄露、连接劫持等安全威胁。

### 1.1 核心组件
- **sshd**:SSH服务端守护进程
- **ssh**:SSH客户端程序
- **scp/sftp**:安全文件传输工具
- **ssh-keygen**:密钥生成工具
- **ssh-agent**:密钥管理工具

### 1.2 主要功能
- 加密的远程终端访问
- 安全的文件传输
- 端口转发隧道
- X11图形界面转发
- 基于密钥的身份验证

## 2. 安装OpenSSH

### 2.1 检查现有安装
```bash
ssh -V
systemctl status sshd

2.2 不同发行版的安装命令

发行版 安装命令
Ubuntu/Debian sudo apt install openssh-server
CentOS/RHEL sudo yum install openssh-server
Arch Linux sudo pacman -S openssh
openSUSE sudo zypper install openssh

2.3 验证安装

sudo systemctl start sshd
sudo systemctl enable sshd

3. 基础配置

3.1 主配置文件位置

/etc/ssh/sshd_config

3.2 关键配置参数说明

Port 22                       # 监听端口(建议修改)
ListenAddress 0.0.0.0         # 监听所有IP
PermitRootLogin prohibit-password # 禁止密码登录root
PasswordAuthentication yes    # 临时允许密码登录
X11Forwarding yes             # 允许X11转发
MaxAuthTries 3                # 最大认证尝试次数

3.3 配置示例

# 备份原配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

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

4. 安全加固配置

4.1 端口修改

Port 2222  # 改为非标准端口

4.2 禁用root密码登录

PermitRootLogin no

4.3 限制用户访问

AllowUsers alice bob
DenyUsers hacker

4.4 启用密钥认证

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

4.5 其他安全设置

ClientAliveInterval 300       # 5分钟无活动断开
ClientAliveCountMax 0         # 不保持持久连接
LoginGraceTime 1m             # 登录超时1分钟

5. 密钥认证配置

5.1 生成密钥对

ssh-keygen -t ed25519 -C "your_email@example.com"

5.2 密钥参数说明

5.3 部署公钥到服务器

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname -p 2222

5.4 手动部署公钥

mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6. 高级配置技巧

6.1 多因素认证

# 安装Google Authenticator
sudo apt install libpam-google-authenticator

# 配置PAM模块
echo "auth required pam_google_authenticator.so" | sudo tee -a /etc/pam.d/sshd

6.2 端口转发

# 本地端口转发
ssh -L 8080:localhost:80 user@host

# 远程端口转发
ssh -R 3306:localhost:3306 user@host

6.3 跳板机配置

Host jumpbox
  HostName jump.example.com
  User alice
  Port 2222
  IdentityFile ~/.ssh/jump_key

Host internal-server
  HostName 192.168.1.100
  User bob
  ProxyJump jumpbox

7. 防火墙配置

7.1 UFW配置示例

sudo ufw allow 2222/tcp
sudo ufw enable

7.2 firewalld配置

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

7.3 iptables配置

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

8. 日志与监控

8.1 日志位置

/var/log/auth.log      # Debian系
/var/log/secure        # RHEL系

8.2 日志分析示例

# 查看失败登录尝试
grep "Failed password" /var/log/auth.log

# 统计攻击来源IP
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

8.3 fail2ban安装配置

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

9. 常见问题排查

9.1 连接问题诊断

ssh -vvv user@hostname  # 显示详细调试信息
sudo journalctl -u sshd # 查看服务日志

9.2 权限问题

# 检查关键目录权限
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

9.3 SELinux问题

# 检查SELinux状态
sestatus

# 修改SSH端口时需要
semanage port -a -t ssh_port_t -p tcp 2222

10. 最佳实践建议

  1. 定期更新:保持OpenSSH为最新版本

    sudo apt update && sudo apt upgrade openssh-server
    
  2. 最小权限原则:仅允许必要用户访问

  3. 禁用旧协议:禁用SSHv1和不安全的加密算法

    Protocol 2
    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
    
  4. 网络限制:通过防火墙限制源IP访问

  5. 备份配置:修改前备份配置文件

附录:常用命令速查表

命令 说明
systemctl restart sshd 重启SSH服务
ssh-keygen -lf id_rsa.pub 查看密钥指纹
ssh-add ~/.ssh/id_ed25519 添加密钥到ssh-agent
scp -P 2222 file user@host: 安全文件传输
sftp -oPort=2222 user@host 交互式文件传输

提示:所有配置修改后都需要执行 sudo systemctl reload sshd 使更改生效 “`

这篇文章提供了从基础安装到高级配置的完整OpenSSH指南,包含安全加固、密钥管理、故障排查等实用内容。实际部署时,请根据具体环境调整配置参数,并始终遵循最小权限原则。

推荐阅读:
  1. 升级openssh版本
  2. openssh 加固

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux openssh

上一篇:怎样解析Linux系统/etc/pam.d/system-auth文件

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》