上一篇
物理机开启ssh
- 物理机
- 2025-08-08
- 4
物理机上开启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服务
- 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 ),建议设置为 no 或 prohibit-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服务是否正在运行。
安全加固建议
- 禁用Root远程登录:
- 修改
PermitRootLogin
为no
或prohibit-password
,仅允许普通用户登录后通过sudo
提权。
- 修改
- 使用密钥认证:
- 生成SSH密钥对(
ssh-keygen
),将公钥上传到服务器(~/.ssh/authorized_keys
),并禁用密码认证(PasswordAuthentication no
)。
- 生成SSH密钥对(
- 限制登录用户:
- 通过
AllowUsers
或DenyUsers
指定允许或禁止的用户。
- 通过
- 更改默认端口:
- 修改
Port
为非标准端口(如2222),减少被扫描的风险。
- 修改
- 启用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服务后即可生效。