Azure ACS环境下能否修改Kubernetes节点的SSH端口?
绝对可以修改ACS Kubernetes节点的SSH端口,而且只要操作得当,完全不会影响集群内部通信——我之前在生产环境里这么配置过,分享下具体的实现步骤和注意事项:
用ACS-Engine自定义部署集群(推荐方式)
如果还没部署集群,用acs-engine是最省心的方案,能把自定义SSH端口直接固化到集群模板里,后续节点扩容、重建都会自动沿用这个配置。
在acs-engine的ARM模板(apimodel.json)里,找到masterProfile和agentPoolProfiles段,添加ssh.port字段指定你想要的端口(比如2222):
"masterProfile": { "count": 1, "dnsPrefix": "your-master-dns", "vmSize": "Standard_DS2_v2", "ssh": { "username": "azureuser", "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...", "port": 2222 // 替换为你的自定义SSH端口 } }, "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "Standard_DS2_v2", "ssh": { "username": "azureuser", "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...", "port": 2222 // 可以和master端口一致,也可以单独设置 } } ]
部署集群后,所有节点的SSH默认端口就是你设置的值,而且集群内部的K8s组件通信(比如kube-apiserver和kubelet的交互)用的是专用端口,和SSH端口完全独立,不会有任何影响。
现有ACS集群修改SSH端口
如果已经有运行中的集群,也可以修改,但需要注意持久化的问题(因为ACS节点是VMSS,滚动更新后默认配置会复原):
1. 单个节点临时修改(测试用)
- 先用默认22端口SSH到目标节点
- 修改sshd配置文件:
找到sudo vi /etc/ssh/sshd_configPort 22这一行,改成你想要的端口(比如2222) - 重启sshd服务生效:
sudo systemctl restart sshd # Ubuntu/Debian用这个 # 或者 CentOS/RHEL 用 sudo service sshd restart - 关键:在节点对应的网络安全组(NSG)里添加入站规则,允许新的SSH端口(比如2222)的流量,测试能正常连接后,再考虑禁用22端口的入站规则。
2. 持久化修改(避免VMSS更新后复原)
因为VMSS节点重建或扩容时会用原始配置,所以需要用自定义脚本扩展来固化修改:
- 创建一个bash脚本
update-ssh-port.sh:#!/bin/bash # 修改SSH端口为2222 sed -i 's/^Port 22/Port 2222/' /etc/ssh/sshd_config # 重启sshd服务 systemctl restart sshd || service sshd restart - 把这个脚本上传到Azure存储账户的Blob容器(设为公开访问或者用SAS令牌)
- 用Azure CLI给VMSS添加自定义脚本扩展:
对master节点的VMSS也执行同样的操作,这样所有节点(包括未来新增的)都会自动应用自定义SSH端口。az vmss extension set \ --resource-group your-resource-group \ --vmss-name your-agent-vmss-name \ --name CustomScript \ --publisher Microsoft.Azure.Extensions \ --settings '{"fileUris": ["https://your-storage-account.blob.core.windows.net/scripts/update-ssh-port.sh"], "commandToExecute": "./update-ssh-port.sh"}'
核心注意事项
- 集群通信无影响:K8s组件之间的通信依赖的是专用端口(比如kube-apiserver的6443、kubelet的10250等),和SSH端口完全隔离,修改SSH端口不会破坏集群的任何功能。
- NSG规则必须同步:一定要先在NSG里开放新的SSH端口,再修改节点的sshd配置,不然会出现无法连接节点的情况。
- 不要禁用22端口太急:先测试新端口能正常SSH连接,确认没问题后再禁用22端口的入站规则,防止出现断连风险。
我当时改完后,针对22端口的暴力攻击告警直接降了90%,集群运行完全正常,按照这个步骤来肯定没问题。
内容的提问来源于stack exchange,提问作者s g
相关产品推荐
相关产品推荐

