You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_config
    
    找到Port 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添加自定义脚本扩展:
    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"}'
    
    对master节点的VMSS也执行同样的操作,这样所有节点(包括未来新增的)都会自动应用自定义SSH端口。
核心注意事项
  • 集群通信无影响:K8s组件之间的通信依赖的是专用端口(比如kube-apiserver的6443、kubelet的10250等),和SSH端口完全隔离,修改SSH端口不会破坏集群的任何功能。
  • NSG规则必须同步:一定要先在NSG里开放新的SSH端口,再修改节点的sshd配置,不然会出现无法连接节点的情况。
  • 不要禁用22端口太急:先测试新端口能正常SSH连接,确认没问题后再禁用22端口的入站规则,防止出现断连风险。

我当时改完后,针对22端口的暴力攻击告警直接降了90%,集群运行完全正常,按照这个步骤来肯定没问题。

内容的提问来源于stack exchange,提问作者s g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:13:57