为内网环境内的Kiro配置网络代理

一、背景

Kiro CLI/IDE需要外网访问权限才能完成登录和模型调用,因此在纯内网是无法使用的。当为一台纯内网的云桌面开发机部署Kiro的时候,需要通过网络白名单的形式,放行特定域名。本文以通过HTTP Proxy代理形式为例,介绍在Ubuntu 22.04 Linux云桌面上通过HTTP Proxy使用Kiro。

二、环境准备

1、内网云桌面环境

本文以一个Workspaces作为云桌面环境,操作系统为Ubuntu Linux 22.04.5,网络为内网环境。

为了确保完全的内网环境,我们可在云桌面所在的VPC的子网路由表中,删除掉0.0.0.0/0的路由,这表示本云桌面将完全不通外网。如下截图。

2、作为代理服务器的EC2网络环境准备

本文以云上环境EC2来搭建Proxy,选择操作系统为Ubuntu 24.04,磁盘选择gp3 20GB。创建的时候,注意为这个EC2的网络选择为一个路由表可以访问IP可以有弹性IP的网段。如下截图。

调整本EC2的安全组,允许来自Workspaces的内网地址来访问本Proxy服务器。本文采用的proxy服务器使用TCP 80端口,而非常见的TCP 3128端口。这一点配置中请注意。

3、安装Squid代理

注:以下所有工作可以通过Kiro CLI为你执行,只需要以人类语言进行简单指令,Kiro CLI即可完成对Squid配置文件调整白名单、检查日志、整理放行记录的工作。如下截图。

虽然如此,这里还是说一下old school方式,手工编辑配置文件调整Squid放行清单。

登录到这台具有外网访问权限的EC2,首先将这个Linux系统升级到最新版本。执行如下命令:

sudo apt update
sudo apt upgrade -y
sudo reboot

重启完成后,安装Squid软件:

sudo apt install squid

启动Squid服务:

sudo systemctl restart squid
sudo systemctl enable squid

4、修改Squid配置

备份现有/etc/squid/squid.conf,然后新建一个。

mv /etc/squid/squid.conf /etc/squid/squid.conf-default
touch /etc/squid/squid.conf
vim /etc/squid/squid.conf

新的配置文件内容如下:

acl localnet src 172.16.0.0/16
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777

# 白名单域名
acl whitelist dstdomain "/etc/squid/whitelist.txt"

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager

# 允许白名单域名
http_access allow whitelist
# 拒绝所有其他访问
http_access deny all

http_port 80
cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
access_log /var/log/squid/access.log squid

refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern .		0	20%	4320

# 连接日志配置
cache_log /var/log/squid/cache.log
debug_options 11,2 33,2 17,2
logformat connection %>a %tr %>Hs %<st %rm %ru %[un %Ss:%Sh
access_log /var/log/squid/connection.log connection

在以上配置文件中,允许来自172.16.0.0/16的云桌面去访问/etc/squid/whitelist.txt清单。除此之外,一律拒绝访问。

修改完毕后重启服务。

sudo systemctl restart squid

5、最终Kiro白名单清单

参考本文末尾章节。

三、为Kiro CLI配置Proxy登录并使用

1、为浏览器配置代理用于SSO认证

由于Kiro登录过程中,要通过浏览器连接AWS云端的Kiro认证服务,并跳转SSO单点登录,因此需要为浏览器配置代理,才可以访问外网。这里的浏览器和Kiro CLI使用同一个代理。如下截图。

此外,在Firefox的proxy设置中,下边还有一行No proxy for,这里可以填写不需要代理的特殊域名地址,例如本身处于内网的某些服务(如代码管理),它们不需要经过HTTP proxy即可,这里即可填写它们的域名或者IP,可填写多个。

如果您用的是Chrome浏览器,可在Chrome的扩展程序中安装Proxy管理插件,实现Proxy自动切换。

2、Kiro-CLI加代理启动

执行如下命令启动HTTP proxy形式下的Kiro CLI。

env https_proxy="http://172.16.254.59:80" kiro-cli login --use-device-flow

登录步骤和普通网络环境下的一样。登录过程中,会弹出浏览器,因为浏览器配置了代理服务器,则可以顺利跳转,通过SSO完成登录。

登录完毕后,执行如下命令,启动Kiro CLI。

env https_proxy="http://172.16.254.59:80" kiro-cli

启动成功。由此Kiro工作正常。

四、为Kiro IDE配置Proxy登录并使用

1、为浏览器配置代理

代理设置同上文Kiro CLI对代理的需求。

2、在Ubuntu 22.04系统下Kiro IDE 0.9.40版本找不到GLIBC 2.38的bug的解决办法

针对Ubuntu 22.04下使用Kiro IDE 0.9.40版本,即安装包是:

kiro-ide-0.9.40-stable-linux-x64.tar.gz

在Kiro IDE的日志中会遇到如下错误:

2026-02-14 20:43:16.779 [error] [uncaught exception in main]: Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/lxy2/Documents/Kiro/resources/app/node_modules/@vscode/sqlite3/build/Release/vscode-sqlite3.node)
2026-02-14 20:43:16.779 [error] Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /home/lxy2/Documents/Kiro/resources/app/node_modules/@vscode/sqlite3/build/Release/vscode-sqlite3.node)

这个错误将影响登录成功结果的写入。因此需要额外执行步骤。假如Kiro IDE的目录在~/Documents/Kiro/,那么执行如下命令:

cp ~/Documents/Kiro/resources/app/extensions/kiro.kiro-agent/node_modules/sqlite3/build/Release/node_sqlite3.node ~/Documents/Kiro/resources/app/node_modules/@vscode/sqlite3/build/Release/vscode-sqlite3.node

这样即可解决日志中报错无法找到GLIBC 2.38的问题。

3、Kiro IDE加代理启动并登录

env https_proxy="http://172.16.254.59:80" kiro

操作步骤和普通非网络代理环境一样,正常登录即可。

五、最终结论

网络白名单地址如下:

# 本信息截止2026-02-14,Kiro CLI 1.26.0和Kiro IDE 0.9.40在Ubuntu 22.04实测通过

# SSO登录
d-xxxxxxxx.awsapps.com # 替换为您Kiro SSO用的IAM Identity Center的Start URL的域名
oidc.us-east-1.amazonaws.com
.sso.us-east-1.amazonaws.com
.sso-portal.us-east-1.amazonaws.com
.sso.amazonaws.com

# SSO认证需要跳转的AWS控制台
us-east-1.signin.aws # 区域和Kiro SSO所在IAM Identity Center的区域相关
.awsstatic.com
.console.aws.a2z.com

# Kiro使用相关
.kiro.dev
.aws.dev
.q.us-east-1.amazonaws.com
.q.eu-central-1.amazonaws.com
aws-toolkit-language-servers.amazonaws.com
aws-language-servers.us-east-1.amazonaws.com
codewhisperer.us-east-1.amazonaws.com

# 遥测
client-telemetry.us-east-1.amazonaws.com
cognito-identity.us-east-1.amazonaws.com
us-east-1.prod.pl.panorama.console.api.aws

# 升级
desktop-release.q.us-east-1.amazonaws.com

注:在以上白名单中,kiro.dev域名前带一个 . 表示本域名和子域名下所有,即表示 *.kiro.dev 的意思。

六、参考文档

Configuring a firewall, proxy server, or data perimeter for Kiro

https://kiro.dev/docs/privacy-and-security/firewalls/


最后修改于 2026-02-17