Làm Sao Để Vượt Thoát Kiểm
ar en es fa fr my ru zh

Xuyên Hầm SSH

SSH, Shell an toàn, là một giao thức chuẩn để mã hóa thông tin giữa máy vi tính bạn và máy chủ. Thông tin được mã hóa để giới điều hành mạng không xem hay sửa được. SSH có thể được dùng cho nhiều ứng dụng thông tin an toàn, trong số đó phổ thông nhất là việc đăng nhập an toàn vào máy chủ và chuyển tải tập tin an toàn (scp hay SFTP).

SSH đặc biệt hữu ích cho việc vượt thoát kiểm duyệt vì nó có thể cung cấp một đường hầm mã hóa và hoạt động như một proxy tổng quát. Giới kiểm duyệt có thể ngần ngại khi chận SSH an toàn, vì SSH được dùng cho nhiều mục tiêu khác nhau chứ không riêng gì việc vượt thoát kiểm duyệt; thí dụ như giới quản lý máy chủ dùng SSH để quản trị máy móc qua Internet.

Dùng SSH cần có một tài khoản trên một máy chủ, thường là Unix hay Linux. Cho mục tiêu vượt thoát kiểm duyệt, máy này cần có đường truyền Internet không bị chận, và lý tưởng nhất là do một ngưòi đáng tin cậy điều hành. Một số công ty cũng có bán tài khoản và nhiều dịch vụ web cũng cho phép dùng SSH. Xem danh sách những nơi cung cấp tài khoản shell tại trang http://www.google.com/Top/Computers/Internet/Access_Providers/Unix_Shell_Providers với tài khoản giá từ 2 đến 10 đô la Mỹ một tháng.

Một ứng dụng SSH gọi là OpenSSH đã cài sẵn trong hầu hết các máy Unix, Linux và Mac OS. Nó là một ứng dụng dòng lệnh chạy trong Terminal dưới tên "ssh". Cho Windows, bạn có thể lấy trình SSH miễn phí có tên PuTTY.

Tất cả các phiên bản mới nhất của SSH hỗ trợ việc dùng SOCKS proxy để cho phép trình duyệt web và nhiều phần mềm khác dùng đường nối kết SSH có mã hóa để liên lạc với thế giới Internet tự do. Trong thí dụ sau đây, chúng tôi sẽ đề cập đến cách dùng SSH này. Các bước sau đây sẽ thiết kế SOCKS proxy vào cổng nội bộ 1080 trên máy vi tính bạn.

Dòng lệnh Linux/Unix và MacOS (với OpenSSH)

OpenSSH có trong trang http://www.openssh.com/, tuy nhiên nó đã được cài sẵn trong các máy vi tính hệ Linux/Unix và Mac OS.

Mệnh lệnh ssh bạn cho chạy có ghi số cổng nội bộ (thường là 1080), tên máy chủ và tên sử dụng (tên tài khoản). Nó trông giống như sau: 

ssh -D localportnumber accountname@servername

Lấy thí dụ:

ssh_1

Bạn sẽ được hỏi mật khẩu, rồi sau đó sẽ đăng nhập vào máy chủ. Với tùy chọn -D, một SOCKS proxy nội bộ sẽ được kiến tạo và tồn tại cho đến khi nào bạn rời máy chủ. Quan trọng: bạn nên kiểm tra lại chìa khóa máy chủ và cấu hình ứng dụng bạn dùng, nếu không, bạn không dùng được đường hầm vừa thiết lập! 

Giao diện đồ họa Windows (với PuTTY)

Ứng dụng PuTTY có trong trang: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Bạn có thể lưu trữ trình putty.exe trên đĩa cứng để dùng sau đó, hoặc cho chạy nó trực tiếp từ trang web (điều này thường thì làm được trên máy chung hay máy công cộng như các máy ở thư viện và quán café internet).

Khi khởi động PuTTY, khung session configuration (cấu hình phiên làm việc) hiện ra. Trước nhất điền vào tên (địa chỉ) của máy chủ SSH bạn sẽ nối vào (thí dụ ở đây là example.com). Nếu bạn chỉ biết địa chỉ IP hoặc không dùng được tên máy chủ vì bị chận DNS, bạn có thể dùng địa chỉ IP thay vào đó. Nếu bạn thường xuyên làm các bước này, thì bạn có thể lập ra một hồ sơ (profile) PuTTY lưu giữ các dữ kiện này lại, cũng như các tùy chọn mô tả dưới đây. Các thông tin này sẽ được dùng mỗi lần kết nối.

PuTTY_config_1

Kế tiếp, trong cột Category, chọn Connection > SSH > Tunnels.

Điền vào 1080 trong ô Source port, và chọn các ô Dynamic và IPv4.

PuTTY_config_2

Bấm nút Add, rồi nút Open. Đường nối kết vào máy chủ được thiết lập, một khung mới sẽ hiện ra để bạn đăng nhập tên và mật khẩu. 


Sau khi điền vào, bạn sẽ đăng nhập vào máy chủ và sẽ có được giao diện dòng lệnh của máy chủ. SOCKS proxy sau đó được tihết lập. Quan trọng: bạn nên kiểm tra lại chìa khóa máy chủ và cấu hình ứng dụng bạn dùng, nếu không, bạn không dùng được đường hầm vừa thiết lập! 

Kiểm tra chìa khóa chủ

Lần đầu nối kết vào máy chủ, bạn sẽ được hỏi xác nhận host key fingerprint (dấu vết chìa khóa chủ) của máy chủ. Host key fingerprint là một chuỗi dài chữ và số (dạng hexadecimal) như  57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36:dd để dùng xác nhận an toàn một máy chủ nào đó. Kiểm tra lại dấu vết chìa khóa chủ là một biện pháp an ninh để xác nhận bạn đang liên lạc đúng với máy chủ bạn muốn, và đường nối kết có mã khóa không bị chặn bắt.

SSH không cung cấp cách nào để kiểm tra điều này tự động.  Để tận dụng lợi ích của biện pháp an ninh này, bạn nên tìm cách kiểm tra trị giá của dấu vết chìa khóa chủ với người quản lý máy chủ, hoặc hỏi một người quen tín cẩn thử nối vào cùng máy chủ xem có cùng dấu vết chìa khóa chủ.

Kiểm tra dấu vết chìa khóa chủ là điều quan trọng để đảm bảo SSH bảo mật thông tin và không bị nghe lén, nhưng không cần thiết nếu bạn chỉ muốn dùng nó để vượt thoát kiểm duyệt và không màng nếu người điều hành mạng xem được nội dung thông tin.

Cấu hình ứng dụng để dùng proxy

Proxy thiết lập với các bước trên, sẽ chạy cho đến khi nào bạn đóng ứng dụng SSH lại. Tuy nhiên, nếu đường nối kết vào máy chủ bị gián đoạn thì bạn phải làm lại các bước trên để phục hồi lại proxy. 

Một khi proxy đã chạy tốt rồi, bạn cần cấu hình các ứng dụng phần mềm để dùng proxy. Với các bước trên, proxy là SOCKS proxy ở localhost, cổng 1080 (còn được biết đến như 127.0.0.1, cổng 1080). Bạn nên tìm cách bảo đảm ứng dụng được cấu hình sao cho tránh rò rỉ DNS, nếu không thì SSH sẽ không hữu hiệu trong việc bảo mật lẫn vượt thoát kiểm duyệt.

Thêm tùy chọn

Cho tới đây, tất cả mệnh lệnh này đều cho ra dòng lệnh trên máy chủ từ xa để bạn có thể chạy những mệnh lệnh nào khác trên máy đó. Có khi bạn chỉ muốn thực thi một mệnh lệnh trên máy chủ từ xa, rồi trở lại dòng lệnh trên máy nội bộ. Điều này làm được bằng cách kẹp mệnh lệnh thực thi trên máy chủ xa giữa hai ngoặc đơn.

$ ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'

Đôi khi bạn muốn thực thi một số mệnh lệnh tốn thì giờ trên máy chủ xa, nhưng bạn không chắc là có đủ thì giờ làm không, trong phiên làm việc ssh. Nếu bạn đóng đường nối kết lại trước khi mệnh lệnh chạy xong, mệnh lệnh đó sẽ bị hủy bỏ. Để tránh mất mát việc làm như thế, bạn có thể khởi động qua ssh một phiên làm việc screen từ xa, rồi tách nó ra, và nối lại bất cứ khi nào bạn muốn. Để tách một phiên làm việc screen từ xa, chỉ cần đóng đường nối kết ssh: phiên làm việc screen đã được tách ra sẽ vẫn còn chạy trên máy chủ từ xa.

ssh còn có nhiều tùy chọn khác. Bạn có thể thiết kế máy chủ từ xa, cho phép bạn đăng nhập vào, hoặc chạy mệnh lệnh mà không cần cho biết mật khẩu mỗi lần. Cách thiết trí rắc rối nhưng tiết kiệm được nhiều thì giờ đánh máy; bạn tìm trên web với các từ khóa "ssh-keygen", "ssh-add", và "authorized_keys".

scp: sao chép tập tin

Giao thức SSH nới rộng hơn mệnh lệnh ssh căn bản. Một mệnh lệnh hữu ích khác dựa vào giao thức SSH là scp để sao chép an toàn. Thí dụ sau đây sao chép một tập tin trong ngăn hiện thời trên máy nội bộ sang ngăn /home/me/stuff trên máy chủ từ xa. 

$ scp myprog.py me@othermachine.domain.org:/home/me/stuff

Lưu ý là mệnh lệnh sẽ chép đè lên bất cứ tập tin nào cùng tên /home/me/stuff/myprog.py. (Hoặc bạn sẽ thấy báo lỗi là có tập tin cùng tên và bạn không đủ quyền hạn để chép đè nó). Nếu /home/me là ngăn nhà của bạn, ngăn đến có thể được viết tắt.

$ scp myprog.py me@othermachine.domain.org:stuff

Bạn cũng có thể sao chép dễ dàng từ chiều kia: từ máy chủ từ xa về lại máy nội bộ. 

$ scp me@othermachine.domain.org:docs/interview.txt yesterday-interview.txt

Tập tin trên máy từ xa là interview.txt trong ngăn phụ docs của ngăn nhà. Tập tin sẽ được sao chép đến yesterday-interview.txt trong ngăn nhà của máy nội bộ

scp có thể dùng để sao chép một tập tin từ một máy xa đến một máy xa khác. 

$ scp user1@host1:file1 user2@host2:otherdir

Để sao chép toàn bộ tập tin và ngăn phụ trong một ngăn, dùng tùy chọn -r 

$ scp -r user1@host1:dir1 user2@host2:dir2

Xem trang hướng dẫn scp để biết thêm các tùy chọn khác. 

rsync: tự động chuyển tải hàng loạt và sao lưu

rsync là một mệnh lệnh rất hữu dụng để làm cho một ngăn của máy xa đồng bộ với một ngăn ở máy nội bộ. Chúng tôi đề cập nơi đây vì nó là một mệnh lệnh hữu dụng để làm việc qua mạng, như ssh, và vì giao thức ssh được đề nghị dùng làm nền tảng chuyển tải cho rsync.

Sau đây là một thí dụ đơn giản và hữu ích. Nó sao chép tập tin từ ngăn /home/myname/docs trên máy nội bộ đến ngăn backup/ trong ngăn nhà trên máy quantum.example.edu. rsync thực sự giảm thiểu số lượng sao chép cần thiết nhờ những bước kiểm tra tinh vi.

$ rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/

Tùy chọn -e của ssh dùng giao thức SSH bên dưới khi chuyển tải, như đề nghị. Tùy chọn -a (cho "archive") sao chép mọi thứ trong ngăn nêu tên. Nếu bạn muốn xoá các tập tin trên máy nội bộ trong khi sao chép, dùng tùy chọn --delete. 

Để dể thở hơn khi dùng SSH thường xuyên

Nếu bạn dùng SSH để nối kết vào thật nhiều máy chủ, bạn sẽ thường phạm lỗi vì đánh máy sai tên người dùng hay tên máy chủ (thử tưởng tượng ráng nhớ 20 bộ tên máy chủ/tên người dùng). May thay, SSH cung ứng một cách đơn giản để quản trị thông tin phiên làm việc qua một tập tin cấu hình.

Tập tin cấu hình được dấu trong ngăn nhà dưới ngăn .ssh (tên đầy đủ trông giống như /home/jsmith/.ssh/config - nếu tập tin này chưa có, bạn có thể tạo ra nó. Dùng ứng dụng văn bản ưa thích để mở tập tin này ra và ghi tên máy chủ như sau:

Host dev
HostName example.com
User fc

Bạn có thể ghi nhiều tên máy chủ trong tập tin cấu hình, và sau khi lưu giữ nó, nối kết vào máy chủ gọi là "dev" bằng mệnh lệnh sau: 

$ ssh dev

Nhớ là dùng thường xuyên các mệnh lệnh này sẽ tiết kiệm được  nhiều thì giờ.