确认ssh端口已修改需先执行sudo ss -tlnp | grep sshd验证服务端监听端口,若非预期值则编辑/etc/ssh/sshd_config并重启sshd;连接时可用ssh -p 2222 user@ip临时指定端口,或通过~/.ssh/config配置host别名绑定port、user等参数(权限须为600),不推荐全局修改/etc/ssh/ssh_config。

确认远程服务器SSH端口已修改
先确保目标服务器上的sshd服务确实已切换到非22端口,否则本地改配置毫无意义。登录服务器执行:sudo ss -tlnp | grep sshd,查看监听端口是否为预期值(如2222、33等)。若仍显示:22,说明服务端未生效,需编辑/etc/ssh/sshd_config并重启sshd:sudo systemctl restart sshd(Linux)或sudo launchctl kickstart -k system/com.openssh.sshd(macOS Server)。
方法一:命令行临时指定端口连接
每次连接时直接在ssh命令中加-p参数即可,无需改任何配置文件。
输入:ssh -p 2222 user@192.168.1.100
这一步操作起来很简单,直接把端口号填进命令里就行。注意-p必须紧挨着端口号,中间不能有空格;如果端口号写错或服务器防火墙未放行该端口,连接会卡在“Connecting to…”然后超时。
方法二:为特定主机配置别名与端口(推荐长期使用)
当你频繁访问同一台非标准端口的服务器时,用SSH配置文件定义Host别名最省事,还能顺带绑定用户名、密钥路径等。
第一步:确保~/.ssh/config文件存在且权限正确
运行touch ~/.ssh/config && chmod 600 ~/.ssh/config。如果目录不存在,先执行mkdir -p ~/.ssh。权限不是600会导致SSH直接忽略该文件,且不报错——这是最容易被忽略的失败原因。
第二步:用文本编辑器打开配置文件
终端中输入:nano ~/.ssh/config(或用vscode:code ~/.ssh/config)
第三步:写入主机配置块
在文件中添加以下内容(以连接端口为33、域名为myserver.example.com为例):
Host mybox
HostName myserver.example.com
User admin
Port 33
IdentityFile ~/.ssh/id_ed25519_work
每行缩进用空格,不要用Tab;【Host别名(mybox)不能包含下划线或点,只能是字母、数字、短横线】;若未指定IdentityFile,SSH会默认尝试id_rsa等,可能因密钥不匹配而反复提示密码。
第四步:保存退出后立即生效
按Ctrl+O → Enter → Ctrl+X(nano);之后只需运行ssh mybox,SSH会自动套用全部配置。
方法三:全局修改客户端默认端口(不推荐)
仅当所有SSH连接都强制走同一非22端口时才考虑此操作,实际场景极少,且易引发与其他工具(如git、rsync)的兼容问题。
编辑系统级SSH客户端配置:sudo nano /etc/ssh/ssh_config
在文件末尾添加:
Host *
Port 2222
保存后,所有ssh user@host命令都会默认尝试2222端口。但注意:【一旦设为全局,连本机ssh localhost也会走2222,而macOS默认sshd只监听22,将导致连接拒绝】。除非你已同步把本机sshd也改成2222,否则务必慎用。











