Ubuntu环境下az login无法预留端口报错,求解决方案
az login端口占用/无法分配地址的问题 我之前在Ubuntu上用Azure CLI登录时也碰到过一模一样的问题,试了好几种方法才搞定,给你分享几个可行的解决方案:
手动指定未被占用的端口登录
既然自动扫描的8400-8999端口都不行,咱们直接指定一个不在这个范围内的端口试试。比如选9000,先确认这个端口没被占用:ss -tulpn | grep 9000如果没有任何输出,说明端口可用,接着用这个命令登录:
az login --redirect-port 9000检查防火墙或安全工具的拦截
Ubuntu默认的ufw防火墙可能挡住了这些端口的访问。先临时关闭防火墙测试:sudo ufw disable如果此时
az login成功了,就把需要的端口段加入防火墙允许规则,再重新开启防火墙:sudo ufw allow 8400:8999/tcp sudo ufw enable另外也要留意有没有第三方安全软件(比如杀毒、代理工具)在占用或拦截这些端口,暂时关闭它们试试。
切换到设备码登录(绕过本地端口)
要是端口问题怎么都搞不定,换一种不需要本地端口的登录方式:az login --use-device-code执行后终端会输出一个验证代码和微软登录链接,你用任意浏览器打开链接,输入代码并登录你的Azure账号,终端这边就会自动完成登录流程,完全不用依赖本地端口。
排查占用端口段的进程
虽然你说整个8400-8999都报错误,但还是可以检查下有没有进程在监听这个范围内的端口:ss -tulpn | grep -E ':(8[4-9][0-9]{2})'输出里会显示占用端口的进程PID,用
kill <PID>结束对应的进程后,再尝试az login。修改Azure CLI的默认端口范围
你也可以直接修改Azure CLI的配置,让它在其他端口范围里找可用端口。编辑~/.azure/config文件(如果没有就新建一个),添加以下内容:[cloud] redirect_port_range = 9000-9500保存后重新运行
az login,CLI就会在9000-9500这个范围内自动找可用端口了。
内容的提问来源于stack exchange,提问作者Abhishek Parmar

