SSH Agent của VSCode thật khó tin
(fly.io)-
VSCode và chỉnh sửa từ xa
- VSCode có tính năng hỗ trợ chỉnh sửa từ xa thông qua SSH.
- Nhiều người dùng đang sử dụng VSCode và LLM (mô hình ngôn ngữ lớn) để tạo mã.
- Khi LLM tạo ra mã sai, hiện tượng đó được gọi là "ảo giác", và để giải quyết điều này, việc khép kín vòng lặp giữa LLM và môi trường thực thi thông qua thiết lập "agent" là rất quan trọng.
- Quá trình này diễn ra theo cách LLM tạo mã, agent thực thi mã, tạo ra lỗi, rồi phản hồi lỗi đó lại cho LLM để lặp lại.
-
Vấn đề trong môi trường phát triển
- Việc quy trình phát triển lặp đi lặp lại như vậy diễn ra trên laptop của lập trình viên là điều không mong muốn.
- Vì LLM cũng có thể ảnh hưởng đến cấu hình hệ thống, nên tốt hơn là thực hiện các công việc này trên một instance Linux sạch.
-
Emacs và Tramp
- Emacs hỗ trợ hệ thống chỉnh sửa từ xa thông qua một Elisp hữu ích có tên là Tramp.
- Tramp có thể kết nối tới một môi trường tương tác có khả năng chạy các lệnh shell Bourne thông qua phiên SSH.
-
Cách tiếp cận của VSCode
- VSCode có chức năng tương tự Tramp, nhưng khác với Tramp, nó tìm cách can thiệp toàn diện vào kết nối từ xa.
- Nó chạy một Bash snippet stager để tải agent xuống, đồng thời bao gồm cả việc cài đặt binary của Node.
- Agent chạy thông qua SSH được port forwarding và kết nối với frontend của VSCode qua kết nối WebSockets.
- Giao thức mặc định của kết nối này có thể duyệt hệ thống tệp, chỉnh sửa các tệp tùy ý, khởi chạy tiến trình shell PTY riêng và duy trì tính bền vững.
-
Lo ngại về bảo mật
- Việc dùng VSCode một cách thiếu kiểm soát trên máy chủ phát triển cho mục đích chỉnh sửa từ xa có thể gây ra vấn đề trong việc bảo vệ thông tin nhạy cảm hoặc hạ tầng.
- Đặc biệt, có lo ngại rằng sử dụng chỉnh sửa từ xa của VSCode khi xảy ra sự cố trong môi trường vận hành thực tế (production) là cực kỳ nguy hiểm.
-
Kết luận
- Về mặt nội bộ tại Fly.io, kiểu agent phức tạp như vậy không nhất thiết là bắt buộc để kết nối trực tiếp Fly Machine với VSCode.
- Tuy vậy, vì mục đích viết blog, họ đã tìm hiểu cách VSCode kết nối từ xa và trong quá trình đó đã biết được những sự thật như trên.
1 bình luận
Ý kiến trên Hacker News
Đã định viết một bài dài về phần mềm suốt một tháng. Kurt đang lo vì không viết blog. Cuối cùng quyết định viết một bài ngắn. Có vẻ như có thể viết xong trong 30 phút
Càng hiểu cách VSCode hoạt động, càng thấy nó được duy trì bằng những giải pháp chắp vá. Chỉ nhìn vào tiện ích mở rộng SSH thôi cũng thấy URI workspace có hai định dạng
Tôi không hiểu vấn đề bảo mật ở đây. Nếu đã có thể vào máy bằng SSH và forward socket thì cũng có thể làm nhiều việc khác
Khi vận hành máy chủ mạng, một vấn đề lớn là sinh viên không hiểu OpenSSH client
.vscode-servermỗi 10 giâyTính năng chỉnh sửa qua SSH của VSCode hoạt động rất tốt. Tôi không còn phải dùng vim, nano hay micro trên máy từ xa nữa
Tôi đã biết rằng có thể thực thi mã từ xa. Việc đặt niềm tin sai chỗ vào công cụ phát triển thường dẫn tới hối tiếc
Thuật ngữ "SSH agent" gây nhầm lẫn. Thông thường nó chỉ một daemon dùng để cache token xác thực
Những người khuyên dùng
sshfslà chưa hiểu lợi ích của môi trường VSCode SSH RemoteViệc cho phép chỉnh sửa từ xa bằng VSCode trên máy chủ phát triển khiến tôi thấy bất an. Trên máy chủ production thì lại càng như vậy
Một instance VSCode cục bộ trở thành thin client, còn instance từ xa xử lý phần việc nặng
sshfshoặc thiết lập mount hệ thống tệp từ xa khác