Silenceisdefeat Đã Tắt TCP Forwarding
Từ khi tự mua máy chủ VPS Linode của riêng mình, tôi đã không còn dùng các máy chủ SSH miễn phí để vượt tường lửa nữa. Tuy nhiên hôm nay có một bạn hỏi về việc trang silenceisdefeat không dùng được nữa. Khi kiểm tra hệ thống, tôi phát hiện dòng lệnh AllowTcpForwarding no đã được thêm vào file cấu hình /etc/ssh/sshd_config. Có lẽ do lượng truy cập proxy qua máy chủ này quá lớn khiến máy chủ không chịu nổi tải nên đã bị tắt tính năng chuyển tiếp TCP.
Vậy nếu vẫn muốn tiếp tục sử dụng thì phải làm sao? Tôi thử kiểm tra và phát hiện máy chủ vẫn cho phép biên dịch chương trình C nhưng lại không chạy được :( Tuy nhiên đáng mừng là hệ thống vẫn cài sẵn Python. Tôi lập tức tải một script HTTP proxy đơn giản lên và chạy thử. Kết quả khả quan khi proxy hoạt động tốt nhưng chỉ giới hạn trong mạng nội bộ do tường lửa đã chặn cổng kết nối từ bên ngoài.
Giải pháp tối ưu lúc này khá đơn giản: Hãy mở một tiến trình sshd trên máy tính cá nhân của bạn. Sau đó chỉ cần dùng lệnh ssh -R từ silenceisdefeat để tạo tunnel ngược về máy chủ cá nhân là xong. Trường hợp làm việc tại văn phòng không có IP công cộng thì cần thêm một máy chủ trung chuyển trong nước làm trung gian.
Trong quá trình thiết lập, tôi nhận thấy máy chủ này không bật tính năng ForwardAgent của SSH. Vì không thể upload key cá nhân đang dùng nên tôi đã tạo một cặp key mới dành riêng cho việc tạo tunnel này. Sau khi hoàn tất cấu hình, mọi thứ hoạt động bình thường. Tuy nhiên trong lúc thiết lập tài khoản tunnel mới, tôi vô tình dùng lệnh mv làm mất file key của tài khoản chính, dẫn đến việc không thể đăng nhập vào máy chủ cá nhân của mình. Đành chờ đợi một bạn khác có quyền truy cập mới có thể sửa lỗi này.
Bài học kinh nghiệm: Cần đặc biệt cẩn trọng khi thực hiện các thao tác trong chế độ root.
Bổ sung ngày 07/06/2010: Tôi nhận được email từ anh Samble của silenceisdefeat.com thông báo rằng mình đã hiểu nhầm vấn đề :) Hóa ra file cấu hình SSH đang chạy thực tế nằm ở vị trí /etc/ssh/sshd_config2 và tại đây AllowTcpForwarding đang được kích hoạt (yes). Kiểm tra thực tế xác nhận rằng các kết nối SSH tunnel hiện vẫn hoạt động bình thường.