SSH đến máy tính gia đình


21

Tôi có nhiều máy ở nhà mà tôi muốn truy cập từ trường bằng SSH và VNC. Để làm điều đó tôi đã cho họ IP tĩnh:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi / Raspbian

Tôi biết rằng SSH sử dụng cổng 22, vì vậy tôi có thể chuyển tiếp cổng này tới 192.168.1.51:22 trên bộ định tuyến của mình, nhưng theo cách này tôi sẽ không thể SSH sang Raspberry Pi của mình. Có cách nào để tôi có thể thiết lập điều này để có thể truy cập cả hai máy không?


10
Bạn có thể sử dụng các cổng ssh khác nhau. Tôi không biết làm thế nào là khó khăn trên các cửa sổ, nhưng trên linux thật dễ dàng để thay đổi nó thành một cổng không sao . Bằng cách này, bạn có thể chuyển tiếp cổng 22 để giành máy (không có thay đổi ở đó) và cổng khác (không chuẩn) cho RaspberryPi.
bistoco

2
@Melebius, nó cũ nhưng vẫn là một cuốn sách hay, phần quan trọng đối với tôi là "Đối số cơ bản mà tôi đã cố gắng đưa ra: đừng làm mất an ninh thông qua.", Đây là về một nhu cầu và giải quyết nó một cách dễ dàng . Điều đó nói rằng, có lẽ anh ta không phải thay đổi các cổng ubfox hoặc pi, chỉ cần chuyển tiếp các cổng bộ định tuyến khác nhau cho mỗi cổng 22 máy.
bistoco

1
@bistoco Đồng ý. Tuy nhiên, OP sắp sửa đưa quyền truy cập SSH ra thế giới bên ngoài và bảo mật phải luôn được xem xét trong trường hợp như vậy. Ngoài ra, việc thiết lập các cổng khác nhau trên máy tính không giải quyết được vấn đề của OP vì anh ấy cần kích hoạt các cổng khác nhau (= chuyển tiếp cổng) trên bộ định tuyến của mình.
Melebius

6
@Melebius Tắt chủ đề, nhưng tôi không bao giờ sử dụng 22, chỉ vì các bot tự động sẽ không gõ máy chủ của tôi 24/7. Nó sẽ không loại bỏ một kẻ tấn công thực sự (hoặc kịch bản được viết tốt), nhưng nó sẽ làm giảm số lượng các mục nhật ký của tôi.
Kaz Wolfe

4
Bạn chỉ có thể kết nối với một trong số họ (một địa chỉ có thể truy cập công khai) và sau đó kết nối từ địa chỉ này bằng địa chỉ cục bộ với địa chỉ khác.
tkausl

Câu trả lời:


32

Nếu bạn có IPv6, bạn thậm chí không cần chuyển tiếp cổng! Chỉ cần lấy địa chỉ IPv6 vĩnh viễn của bạn (dựa trên địa chỉ MAC của bạn, vì vậy nó được đảm bảo giữ nguyên trừ khi ISP của bạn không biết IPv6 hoạt động như thế nào) và sử dụng địa chỉ này để truy cập. Vì địa chỉ IPv6 của bạn là công khai và cho phép thế giới để truy cập bạn mà không cần phải thông qua NAT địa phương, bạn không cần phải bật chuyển tiếp cổng ở bất cứ đâu. Nó sẽ "chỉ hoạt động."

Tuy nhiên, lưu ý rằng IPv6 vẫn chưa thực sự được hỗ trợ trên toàn cầu và cả kết nối internet gia đình và kết nối internet từ xa của bạn cần phải có IPv6 hoạt động đầy đủ để thực hiện việc này.

Tuy nhiên, nếu bạn giống như hầu hết mọi người và chỉ có IPv4, vẫn còn một cách! Một số bộ định tuyến cho phép bạn chuyển tiếp các cổng nguồn cụ thể đến các cổng đích cụ thể, như vậy:

nhập mô tả hình ảnh ở đây

Trong ví dụ này, cổng 22được chuyển trực tiếp đến máy của tôi sheepdog, trong khi cổng 292đang được chuyển tiếp sang cổng 22trêncoyote .

Cuối cùng, nếu bộ định tuyến của bạn không có tính năng này, bạn chỉ có thể thay đổi cổng, vì SSH không bị giới hạn chỉ chạy trên cổng 22. Bạn có thể đặt nó thành bất cứ thứ gì bạn muốn (không được sử dụng).

Trong /etc/ssh/sshd_config(bạn cần root để chỉnh sửa, vì vậy sudo nano /etc/ssh/sshd_config), có một dòng ở đầu tệp:

# What ports, IPs and protocols we listen for
Port 22

Thay đổi điều này thành bất cứ điều gì bạn muốn:

# What ports, IPs and protocols we listen for
Port 2992

Khởi động lại máy chủ SSH sudo service ssh restartvà chuyển tiếp cổng trên bộ định tuyến.


Tuy nhiên, đối với trường hợp sử dụng này, tôi sẽ xem xét liệu đường hầm SSH có phải là điều nên làm hay không. Có lẽ bạn nên thiết lập một máy chủ VPN chuyên dụng trên mạng gia đình của bạn? Điều này sẽ cho phép bạn truy cập toàn bộ mạng gia đình của mình từ bất cứ đâu, miễn là bạn có thông tin bảo mật phù hợp cần thiết cho VPN. Ngoài ra, có một chút ít chi phí với VPN; bạn thường chỉ cần chuyển tiếp một cổng cho một máy.


2
Bạn có thể sử dụng một nhà môi giới đường hầm IPv6 để lấy địa chỉ IPv6 nếu ISP của bạn không hỗ trợ IPv6.
André Borie

1
Theo "tính năng này", bạn có nghĩa là chuyển tiếp một cổng sang một cổng khác?
Lưu Siyuan

@LiuSiyuan Yep. Tôi biết điều đó thật kỳ lạ, nhưng tôi đã thấy một số bộ định tuyến không thể xử lý nó. Bộ định tuyến cũ do ISP cung cấp thậm chí không thể thử.
Kaz Wolfe

Bạn không hoàn toàn có được phần IPv6 đó. Chúng tôi có cho rằng tất cả các ISP cung cấp địa chỉ IPv6 cung cấp cho bạn một địa chỉ (nhất quán) khác nhau cho từng thiết bị trên mạng không?
jjmontes

1
@jjmontes Nếu ISP của bạn có thẩm quyền, bạn sẽ nhận được đầy đủ / 64 (hoặc có thể ít hơn, nhưng vẫn đủ để chỉ định một cho mọi máy)
Kaz Wolfe

19

Một cách dễ dàng để giải quyết vấn đề này là ánh xạ các cổng khác nhau từ bộ định tuyến của bạn sang cổng 22 của máy. Ví dụ: bạn có thể có các cài đặt sau trong bộ định tuyến của mình (giả sử bộ định tuyến của bạn có IP 1.2.3.4)

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Sau đó, khi bạn sử dụng ssh, chỉ định cổng bạn muốn sử dụng bằng cách nhập

$ ssh <username>@<router ip> -p <your port>

Bây giờ bạn sẽ có thể kết nối với tất cả các máy của bạn.


11

Nếu bạn biết một trong những máy tính của bạn luôn hoạt động, bạn cũng có khả năng sử dụng nó làm proxy ssh.

giả sử bạn có thiết lập tên miền cho địa chỉ IP bên ngoài của mình (ví dụ myhome.dyndns.com hoặc bất cứ điều gì), những gì bạn sẽ làm là kết nối trên một máy tính (giả sử raspberry luôn hoạt động và bạn chuyển tiếp cổng từ bộ định tuyến của mình sang nó), các kết nối ssh của bạn sẽ là:

trường học -> (bộ định tuyến, minh bạch tại đây) -> mâm xôi -> ubfox hoặc windows

bây giờ, trong ~ / .ssh / config của bạn ở trường, hãy thêm các dòng:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %r@myhome.dyndns.com

Để kết nối rồi:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

Từ giờ, nếu bạn gõ ssh ubfox, trước tiên máy tính sẽ kết nối với mâm xôi, sau đó bắt đầu một phiên ssh với máy tính ubfox.

Tôi khuyên bạn, bất cứ cổng nào bạn chọn để chuyển tiếp, để vô hiệu hóa mật khẩu trong /etc/sshd.conf để chỉ cho phép đăng nhập thông qua khóa ssh. Bằng cách này, nếu bạn thiết lập khóa trên mâm xôi và trên Ubuntu, với tham số 'ForwardAgent', bạn sẽ chỉ phải mở khóa và sau đó không cần mật khẩu để kết nối. Bằng cách này, ngay cả khi các bot đang cố gắng đăng nhập vào ssh của bạn, chúng sẽ không bao giờ có thể đăng nhập vì bạn không cho phép đăng nhập mật khẩu.

Phần thưởng, điều này cũng hoạt động với scp, scp foo ubfox: / tmp / foo sẽ sử dụng cùng một thiết lập mà không cần thêm tham số. Phần thưởng 2, thiết lập này không yêu cầu bất kỳ thay đổi nào ở nhà, nếu ngày mai bạn và một máy tính khác, chỉ cần sao chép / dán mã trong cấu hình ssh của bạn, thay đổi máy chủ và ip, đó là, không cần phải mở một cổng mới trên bộ định tuyến


Có bất kỳ nhược điểm nào của việc sử dụng máy làm trung gian cho SSH không? Giả sử tôi sử dụng Raspberry Pi của mình để kết nối với các máy tính khác trong mạng, hiệu suất của nó có ảnh hưởng đến nhiệm vụ không?
acourchesne

1
Có, mâm xôi có thể giới hạn thông lượng vì nó phải phục vụ như máy chủ và máy khách. Nếu bạn đủ tự tin, bạn có thể đạt được kết quả tương tự với các đường hầm ssh. Bằng cách này, mâm xôi chỉ hoạt động như một máy chủ nhưng máy tính trường học của bạn phải thực hiện hai ứng dụng khách.
potens

4

Tôi làm điều này - Tôi để rpi lên và cắm trực tiếp vào bộ định tuyến mọi lúc (vì nó rẻ nhất để chạy) và chỉ ssh vào nó, sau đó chuyển từ nó sang các bộ khác - nó không bao giờ cần chú ý nhiều.

Cũng có thể VNC / RDP GUI qua ống ssh, vui vẻ hoặc chuyển tiếp một cổng cho phép bạn duyệt đến máy chủ trên máy tính để bàn của bạn trong khi giữ riêng tư.

Lý do tôi thêm câu trả lời này là đi cho bạn một số gợi ý.

1) Sử dụng một cổng khác với 22. Bạn có thể để nó 22 trên PI, nhưng thay đổi cổng đến trên bộ định tuyến của bạn thành hơn 10.000 ... Nếu không, bạn sẽ nhận được hàng chục đến hàng trăm cuộc tấn công mỗi ngày - và một khi bạn Bạn được biết là đang chạy một máy chủ SSH, lần khai thác thứ hai được tìm thấy, bạn đã sở hữu.

2) Sử dụng chứng chỉ thay vì tên người dùng / mật khẩu - vô hiệu hóa hoàn toàn tên đăng nhập / mật khẩu.

3) Nếu địa chỉ IP của bạn có thể thay đổi, hãy sử dụng dịch vụ loại dyndns để tự lấy tên máy chủ DNS (Tôi sử dụng noip, nó miễn phí và họ hỗ trợ máy khách Linux để cập nhật địa chỉ IP của bạn - Tôi nghĩ bạn chỉ cần apt-get các pi bây giờ). Vẫn còn một vài công ty khác cung cấp miễn phí.

4) Luôn cập nhật pi của bạn (hoặc bất cứ điều gì bạn ssh vào) (sudo apt-get update). Tôi tin rằng bây giờ ssh đã được xem xét khá tốt, nhưng tôi cũng tin rằng https ...


3

Đã nghi ngờ liệu điều này sẽ phù hợp hơn như một bình luận hơn là một câu trả lời, nhưng dù sao tôi cũng sẽ đăng nó ở đây.

Một số điều bạn nên suy nghĩ trước khi làm điều này:

  1. Bạn sẽ mở các hệ thống của mình lên internet, vì vậy tốt hơn là bạn nên đảm bảo chúng được vá tốt và cấu hình bảo mật của bạn được tăng cường (ví dụ: không cho phép đăng nhập root và sử dụng pubkey thay vì mật khẩu).
  2. IP công cộng của bạn (xem whatismyip.com) có thể thay đổi, tùy thuộc vào ISP của bạn, nó có thể thay đổi hàng ngày hoặc gần như không bao giờ. Điều này có nghĩa là bạn sẽ phải tìm cách tìm ra IP công cộng của mình. Bạn có thể truy cập whatismyip.com từ mạng gia đình hàng ngày, tạo một số ứng dụng hoặc sử dụng DNS động (DynDNS) để ánh xạ IP công cộng thay đổi của bạn thành một tên miền tĩnh.
  3. Nếu bạn muốn sử dụng IPv6 để bỏ qua tất cả các rắc rối liên quan đến IPv4 và NATing, bạn sẽ cần các thiết bị, bộ định tuyến, ISP, ... của mình để nói chuyện với IPv6. Có một số dịch vụ có thể giúp bạn khi ISP của bạn không hỗ trợ IPv6, nhưng thiết bị và bộ định tuyến của bạn sẽ phải nói chuyện bằng mọi cách.
  4. Càng nhiều cổng và thiết bị bạn mở với internet, khu vực tấn công của bạn càng lớn. Tôi sẽ đề nghị sử dụng hộp nhảy trong mạng của bạn và chỉ cho phép SSH truy cập vào thiết bị đó từ internet. Jump-box về cơ bản sẽ là một hệ thống rất cứng mà bạn chuyển tiếp qua bộ định tuyến của mình sang internet. Sau khi kết nối với hộp đó, bạn sẽ có thể SSH vào mạng nội bộ của mình thông qua nó. Hộp nhảy về cơ bản có thể là một Raspberry Pi khác. Tôi sẽ đề nghị sử dụng một thiết bị chuyên dụng, để có thể làm cứng nó càng nhiều càng tốt (trong số những thiết bị khác bằng cách chạy càng ít dịch vụ càng tốt).
  5. (4a) Thay vì có một hộp nhảy bạn SSH, bạn cũng có thể thiết lập máy chủ VPN cho phép bạn duyệt mạng gia đình từ thiết bị của mình ở trường (nếu cho phép kết nối VPN bên ngoài).
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.