Làm cách nào tôi có thể giúp ai đó (như bà cụ) qua SSH, người đứng sau bộ định tuyến NAT?


14

Để giúp người khác nhanh chóng, SSH rất hữu ích, đặc biệt là kết hợp với GNU Screen. Điều phổ biến là người dùng đứng sau bộ định tuyến NAT. Ngay cả khi người dùng có thể cấu hình bộ định tuyến, phải mất một thời gian để nhớ mật khẩu, tìm các tùy chọn phù hợp, v.v.

Vậy, cách dễ nhất để giúp người khác vượt qua SSH nếu họ đứng sau bộ định tuyến NAT là gì?

Tôi hiện đang bảo mọi người mở một thiết bị đầu cuối chạy lệnh bên dưới và chuyển cho tôi IP của họ từ một trang web như http://ip.appspot.com/ :

sudo apt-get install openssh-server ssh-import-id && ssh-import-id lekensteyn

Rõ ràng, điều này sẽ không hoạt động nếu chúng nằm sau bộ định tuyến NAT hoặc có cấu hình tường lửa cá nhân. Vì vậy, có một cái gì đó như:

sshd --accept-help-from lekensteyn

Tôi không tìm kiếm các lựa chọn thay thế như Teamviewer, chỉ là một vỏ như SSH. Nó cũng phải là nguồn mở.

Câu trả lời:


13

Nếu máy tính của bạn có thể chấp nhận kết nối SSH, có một cách để sử dụng kỹ thuật mà Pavlos G. liên kết với mà không cần thêm máy tính.

Trước tiên, bạn cần một người dùng kém may mắn mà bạn bè của bạn sẽ kết nối là:

sudo adduser reverse --shell /bin/false

Nói với bạn của bạn để bắt đầu đường hầm:

ssh -N -R 62222:localhost:22 reverse@lekensteyns-server

Sau đó, trên máy tính của riêng bạn ( lekensteyns-server), bắt đầu kết nối ngược:

ssh -p 62222 localhost

* Tôi không biết đủ về bảo mật để có thể tư vấn về việc tạo một người dùng kém chất lượng phù hợp. Đó có lẽ là điều cần được đề cập trong một câu hỏi riêng biệt.


3
Có vẻ đầy hứa hẹn, tôi đã hỏi một câu hỏi mới về phần người dùng bị hạn chế đó
Lekensteyn

2

Dựa trên nhu cầu cụ thể của bạn, tôi có thể sẽ:

  1. Yêu cầu họ cho tôi biết mật khẩu của bộ định tuyến
  2. Đăng nhập và thiết lập chuyển tiếp cổng cho cổng 22
  3. Kết nối thông qua SSH (hoặc SSH đường hầm nếu bạn cần mở thêm cổng) và hoàn thành công việc.

Tôi cũng quên rằng bạn có thể thử đường hầm ssh ngược , mặc dù giải pháp này về mặt kỹ thuật cần thêm một máy tính trung cấp để hoạt động.

Thông tin thêm có thể được tìm thấy ở đây


1) có thể sẽ không hoạt động vì truy cập bộ định tuyến thường bị cấm đối với công chúng.
Lekensteyn

2

Tôi thường chỉ thiết lập một đường hầm IPv6 (từ sixxs.net hoặc he.net) nếu họ chưa có IPv6 và theo cách đó máy tính có địa chỉ tĩnh và tôi không phải gặp rắc rối với NAT. Tôi cũng muốn thiết lập xác thực dựa trên khóa (sau đó họ không phải cho bạn biết mật khẩu của họ).

Sixxs có khách hàng riêng của họ mà bạn sử dụng. Nó hoạt động đằng sau hầu hết mọi NAT và tự động cập nhật khi địa chỉ IPv4 thay đổi. Họ có hướng dẫn về cách thiết lập và nó được đóng gói cho Ubuntu.

Hurricane Electric sử dụng một đường hầm nơi các gói IPv6 được gửi dưới dạng tải trọng của gói IPv4. Không giống như Sixx, không có TCP / UDP được sử dụng. Điều này có nghĩa là NAT bạn đứng đằng sau phải hỗ trợ chuyển tiếp PROTOCOL 41 (không phải cổng) và chỉ có một máy tính phía sau NAT có thể sử dụng nó. Phần mềm sử dụng đường hầm như thế này được tích hợp vào Ubuntu.

Đối với HE, tôi sử dụng một cái gì đó như thế này trong /etc/network/interfaces:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint 216.218.226.238
     address  2001:470:a29f::2
     netmask  64
     ttl 64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

Một điều khác bạn cần làm là cập nhật điểm cuối đường hầm của bạn. Vì bạn không biết khi nào IP bên ngoài thay đổi, bạn sẽ phải cố gắng cập nhật điểm cuối cứ sau vài phút. Bạn có thể sử dụng một cái gì đó như thế này và chạy nó từ cron:

#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"

1
Những nỗ lực nào cần được thực hiện để thiết lập một đường hầm như vậy một cách chính xác? Kết nối này tất nhiên dựa trên khóa, đó là lý do tại sao tôi sử dụng ssh-import-id
Lekensteyn

Thật vậy, tôi rất muốn tìm hiểu thêm về thủ thuật này.
Rafał Cieślak

0

Trong những năm qua, tôi đã phát triển GUI để thực hiện chính xác những gì OP yêu cầu ... ngoại trừ việc nó yêu cầu quyền truy cập ssh đến máy chủ thứ ba với IP công khai, như đề xuất của Pavlos. Bạn có thể tìm thấy ở đây các gói debian và hướng dẫn:

http://pietrobattiston.it/reachme

Lưu ý rằng (vẫn) không thể chăm sóc cấu hình ban đầu - cụ thể là, bạn phải tự thiết lập các phím rsa cho kết nối không mật khẩu. Sau khi thiết lập, "Reachthem" cho phép bạn xem liệu "Reachme" có được kết nối hay không và để mở một vỏ ssh / duyệt hệ thống tập tin / xem màn hình (thử nghiệm).

Rõ ràng, bạn không cần máy tính thứ ba nếu máy tính của bạn có IP công khai, như trong câu trả lời của ændrük. Và rõ ràng, lợi ích của GUI là người dùng từ xa không phải nhập bất kỳ lệnh nào trong thiết bị đầu cuối ... nhưng một phần lợi ích này sẽ bị mất nếu người dùng từ xa phải cài đặt Reachme. Vì vậy, tôi chỉ luôn cài đặt và thiết lập Reachme cho mọi người mà tôi cài đặt Ubuntu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.