linux通过ssh -p参数指定非默认端口连接远程主机,需确保sshd_config配置正确、服务重启、端口监听且防火墙放行,命令格式为ssh -p 端口号 用户名@主机地址。

Linux 通过 ssh 指定端口连接远程主机,核心是用 -p 参数。只要远程服务器的 SSH 服务监听在非默认端口(比如 2223、12345 等),本地连接时就必须显式带上这个参数,否则会一直尝试连 22 端口并失败。
确认远程 SSH 端口是否已修改并生效
连接前先确保目标主机确实改了端口,且配置已生效:
- 登录远程服务器,检查 /etc/ssh/sshd_config 中是否有类似 Port 2223 的行(取消注释,可多写几行支持多个端口)
- 执行 sudo systemctl restart sshd 重启服务,使新端口生效
- 用 sudo ss -tlnp | grep sshd 或 sudo netstat -tlnp | grep :2223 确认端口已在监听
- 检查防火墙(如 ufw、firewalld 或 iptables)是否放行该端口,例如:sudo ufw allow 2223
本地使用 ssh -p 连接的正确写法
语法统一为:ssh -p 端口号 用户名@主机地址,顺序不能颠倒,-p 必须紧接其后跟数字。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 以用户 admin 连接 IP 为 192.168.1.100、SSH 端口为 2223 的主机:
ssh -p 2223 admin@192.168.1.100 - 如果用户名和本地一致,可省略用户名:
ssh -p 2223 192.168.1.100 - 连接时加 -v 查看详细过程(排错用):
ssh -v -p 2223 admin@192.168.1.100
避免常见错误
很多连接失败其实不是端口问题,而是细节疏忽:
- 不要写成 ssh admin@192.168.1.100:2223 —— 这是错误格式,: 不是 ssh 命令的端口分隔符
- 确保输入的端口号和 sshd_config 中配置的一致,注意别输错数字(如把 2223 输成 223)
- 如果远程服务器同时监听 22 和新端口,但你只想用新端口,仍需加 -p;不加默认仍走 22
- 连接首次建立时会提示确认 host key,输入 yes 回车即可,不影响端口指定
进阶:用 ~/.ssh/config 简化重复连接
如果经常连同一台非标端口主机,可以配置别名,以后直接 ssh myserver 就行:
- 编辑 ~/.ssh/config(若无则新建,权限设为 600):
Host myserver
HostName 192.168.1.100
User admin
Port 2223 - 保存后运行:ssh myserver,自动按配置连接,无需每次敲 -p










