当前位置:首页 > 物理机 > 正文

物理机开启ssh

物理机上开启S SH,需先确保已安装SSH服务端软件,如OpenSSH。

SSH服务

SSH是一种用于计算机之间加密通信的协议,常用于远程登录系统、传输文件等,相比传统的Telnet,SSH通过加密确保数据传输的安全性,防止敏感信息(如密码)被窃取。


检查系统是否已安装SSH

在开始配置之前,需确认物理机是否已安装SSH服务。

检查SSH服务状态

  • Linux/Unix系统
    sudo systemctl status ssh

    sudo service ssh status
  • Windows系统

    需通过“服务”管理器查看是否安装“OpenSSH SSH Server”。

    物理机开启ssh  第1张

安装SSH服务

  • Ubuntu/Debian
    sudo apt update
    sudo apt install openssh-server
  • CentOS/RHEL
    sudo yum install openssh-server
  • Fedora
    sudo dnf install openssh-server
  • Windows

    通过“设置” → “应用” → “可选功能” → 添加“OpenSSH服务器”。


启动并启用SSH服务

Linux/Unix系统

  • 启动SSH服务
    sudo systemctl start ssh

    sudo service ssh start
  • 设置开机自启
    sudo systemctl enable ssh

    sudo chkconfig sshd on  # 针对旧版System V init系统

Windows系统

  • 启动SSH服务:
    • Win + R,输入 services.msc,找到“OpenSSH SSH Server”并启动。
  • 设置开机自启:

    在“服务”管理器中,右键“OpenSSH SSH Server” → “属性” → “启动类型”设置为“自动”。


配置SSH服务

修改SSH配置文件

  • Linux/Unix系统:编辑 /etc/ssh/sshd_config 文件。
    sudo nano /etc/ssh/sshd_config
  • Windows系统:编辑 C:ProgramDatasshsshd_config 文件。

常见配置项

参数 说明
Port 修改SSH服务监听的端口(默认22),建议设置为非标准端口(如2222)以提高安全性。
PermitRootLogin 是否允许root用户远程登录(yes/no/prohibit-password),建议设置为 noprohibit-password
PasswordAuthentication 是否启用密码认证(yes/no),可结合密钥认证禁用密码登录。
AllowUsers 指定允许登录的用户(如 AllowUsers user1 user2)。
PermitEmptyPasswords 是否允许空密码用户登录(yes/no),建议设置为 no

保存并重启SSH服务

  • Linux/Unix
    sudo systemctl restart ssh
  • Windows

    在“服务”管理器中重启“OpenSSH SSH Server”。


配置防火墙以允许SSH流量

Linux/Unix系统

  • UFW(Ubuntu)
    sudo ufw allow 22/tcp  # 默认端口22
    sudo ufw allow 2222/tcp  # 如果修改了端口
  • Firewalld(CentOS/RHEL)
    sudo firewall-cmd --permanent --add-port=22/tcp
    sudo firewall-cmd --permanent --add-port=2222/tcp
    sudo firewall-cmd --reload

Windows防火墙

  • 进入“控制面板” → “系统和安全” → “Windows 防火墙” → “高级设置”。
  • 创建入站规则,允许TCP协议的指定端口(如22或自定义端口)。

远程连接测试

使用SSH客户端连接

  • Linux/Mac
    ssh user@hostname -p [port]
    ssh admin@192.168.1.100 -p 2222
  • Windows
    • 使用PowerShell或第三方工具(如PuTTY、MobaXterm)。
    • PowerShell示例:
      ssh user@hostname -p [port]

验证连接

  • 如果连接成功,说明SSH服务已正确配置。
  • 如果失败,检查以下内容:
    • 服务器IP和端口是否正确。
    • 防火墙是否放行SSH流量。
    • SSH服务是否正在运行。

安全加固建议

  1. 禁用Root远程登录
    • 修改 PermitRootLoginnoprohibit-password,仅允许普通用户登录后通过 sudo 提权。
  2. 使用密钥认证
    • 生成SSH密钥对(ssh-keygen),将公钥上传到服务器(~/.ssh/authorized_keys),并禁用密码认证(PasswordAuthentication no)。
  3. 限制登录用户
    • 通过 AllowUsersDenyUsers 指定允许或禁止的用户。
  4. 更改默认端口
    • 修改 Port 为非标准端口(如2222),减少被扫描的风险。
  5. 启用Fail2Ban

    安装并配置Fail2Ban,防止暴力破解(针对Linux系统)。


常见问题与解决方案

问题 解决方案
无法连接到SSH服务器 检查服务器IP和端口是否正确。
确认防火墙已放行SSH流量。
确保SSH服务已启动。
Root用户无法登录 检查 PermitRootLogin 配置。
确保Root用户密码正确(如果允许密码登录)。
连接超时或被拒绝 检查网络连通性(ping 测试)。
确认SSH服务未被防火墙阻挡。
密钥认证失败 确保公钥已正确添加到 ~/.ssh/authorized_keys
检查密钥权限(chmod 600)。

FAQs

Q1:如何更改SSH的默认端口?

A1:编辑SSH配置文件(如 /etc/ssh/sshd_config),修改 Port 参数为新的端口号(如 Port 2222),保存后重启SSH服务并更新防火墙规则。

Q2:如何禁用密码认证,仅允许密钥登录?

A2:在SSH配置文件中设置 PasswordAuthentication no,确保已配置密钥认证(将公钥添加到 ~/.ssh/authorized_keys),重启SSH服务后即可生效。


0