当前位置:首页>Linux>linux配置ssh

linux配置ssh

  • 2026-10-14 19:49:39
linux配置ssh

第一阶段:安装与启动 SSH 服务

大多数 Linux 发行版默认已安装 OpenSSH 客户端,但服务器端可能需要手动安装。

  1. 安装软件包根据你的发行版使用对应的包管理器:

    发行版
    命令
    Ubuntu / Debiansudo apt update && sudo apt install openssh-server
    CentOS / RHELsudo yum install openssh-server
     或 sudo dnf install openssh-server
    Fedorasudo dnf install openssh-server
  2. 启动并启用服务安装完成后,需要启动服务并设置开机自启:

    # 启动 SSH 服务
    sudo systemctl start ssh    # Debian/Ubuntu (部分旧版用 sshd)
    sudo systemctl start sshd   # CentOS/RHEL

    # 设置开机自启
    sudo systemctl enable ssh
    sudo systemctl enable sshd

    # 检查状态 (看到 active (running) 即成功)
    sudo systemctl status ssh

第二阶段:基础配置

SSH 服务的核心配置文件位于 /etc/ssh/sshd_config。修改此文件前,强烈建议先备份:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

使用编辑器(如 nano 或 vim)打开配置文件:

sudo nano /etc/ssh/sshd_config

常用配置项修改:

  1. 修改默认端口:将 #Port 22 修改为其他端口(如 Port 2222),可以大幅减少针对 22 端口的暴力破解尝试。
  2. 禁止 Root 登录:为了安全,建议将 PermitRootLogin yes 改为 no,使用普通用户登录后再切换身份。
  3. 监听地址:如有必要,可通过 ListenAddress 限制 SSH 只在特定 IP 上监听。

修改完成后,必须重启服务使配置生效:

sudo systemctl restart ssh

第三阶段:配置 SSH 密钥认证(推荐)

使用密钥登录比密码更安全,且可以实现免密登录。

  1. 生成密钥对在你的本地电脑(或作为客户端的服务器)上执行:

    # 推荐使用 Ed25519 算法(更安全高效)
    ssh-keygen -t ed25519 -C "your_email@example.com"

    # 或使用兼容性更好的 RSA 算法
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 按回车使用默认保存路径。
    • 设置密码(Passphrase)可以增加一层安全保障,如果希望完全免密,直接回车留空即可。
  2. 上传公钥到服务器生成密钥后,需要将公钥(.pub 文件内容)复制到服务器。方法 A(推荐,最简单):

    ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip -p 2222

    方法 B(手动复制):将本地 ~/.ssh/id_rsa.pub 的内容复制,然后在服务器上执行:

    # 确保 .ssh 目录存在且权限正确
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh

    # 将公钥内容追加到 authorized_keys
    echo"PASTE_YOUR_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

第四阶段:安全加固(生产环境必做)

完成上述步骤后,建议进行以下安全设置:

  1. 禁用密码登录确认密钥登录测试无误后,编辑 /etc/ssh/sshd_config,将以下选项改为 no,强制使用密钥登录:
    PasswordAuthentication no
    ChallengeResponseAuthentication no
  2. 配置防火墙开放你设置的 SSH 端口(例如 2222),并拒绝其他来源。
    • UFW (Ubuntu):sudo ufw allow 2222/tcp
    • Firewalld (CentOS):
      sudo firewall-cmd --permanent --add-port=2222/tcp
      sudo firewall-cmd --reload
  3. 安装 Fail2ban这是一个防止暴力破解的工具,能自动封禁频繁尝试登录的 IP。
    # Ubuntu/Debian
    sudo apt install fail2ban

    # CentOS/RHEL
    sudo yum install fail2ban

总结建议

  • 测试连接: 在关闭密码登录前,务必打开一个新的终端窗口测试连接,确保密钥能正常登录,避免把自己锁在服务器外面。
  • 保留备用会话: 在进行重大配置更改时,不要关闭当前的 SSH 会话,直到确认新配置生效且没有导致失联。
  • SELinux (仅限 CentOS/RHEL): 如果你修改了端口且系统开启了 SELinux,需要运行命令授权端口,否则连接会被拒绝:sudo semanage port -a -t ssh_port_t -p tcp 2222。

最新文章

随机文章