Cách gán tên máy chủ cho đường hầm SSH


15

Tôi đang sử dụng ssh root@my.server.ip -g -L 4321:localhost:28017 để thiết lập một đường hầm từ MacBook đến máy chủ chuyên dụng của mình tại nhà cung cấp dịch vụ lưu trữ. Nó hoạt động tốt. Bây giờ tôi muốn truy cập một số trang quản trị trên máy chủ từ xa (trang trạng thái MongoDB, trang RabbitMQ, v.v., tất cả trên các cổng khác nhau). Tất cả chúng được liên kết với 127.0.0.1 trên máy từ xa. Làm thế nào tôi có thể điều chỉnh lệnh ssh này để

  • gán tên cho đường hầm và sử dụng ví dụ: "my.tunnel.name" trong trình duyệt của tôi
  • để có thể xác định cổng từ xa trong trình duyệt của tôi; Tôi muốn kết nối với my.tunnel.name:port, để có thể gọi các trang web khác nhau

Điều này có thể với ssh? Tôi đã đọc các trang của người đàn ông và đã đi vòng quanh hai ngày nay, nhưng dường như nó không hoạt động.

--edit 2012-06-01 23: 36-- Nhờ các câu trả lời và nhận xét được cung cấp, chuyển tiếp cổng hiện đang sử dụng

ssh user@remote.server -D 4321

Tôi có thể thiết lập điều này như một proxy trong trình duyệt của mình và trình duyệt sẽ xử lý mọi yêu cầu đối với localhost: anyport như thể nó được thực hiện trên máy chủ từ xa. Sử dụng tên bây giờ là không cần thiết, vì trình duyệt chỉ dành cho các trang web máy chủ từ xa.

Câu trả lời:


12

Những gì bạn mô tả là không thể. Nhưng vẫn có tin tốt:

Tuy nhiên, điều có thể xảy ra là tạo một kết nối động với Máy chủ SSH. Điều này sẽ mở một cổng trên máy tính cục bộ của bạn mà bạn có thể trỏ cài đặt Proxy của Trình duyệt và cho phép bạn sử dụng đường hầm làm máy chủ proxy. Nhưng bạn phải nhập tên máy chủ / ip và cổng vào trình duyệt như thể trình duyệt đang chạy trên máy mà SSH Server đang bật.

Lệnh trông như thế này: ssh user@server.example.com -D 1234
Sau đó trỏ proxy của trình duyệt của bạn tới localhost:1234.

Vì vậy, nếu bạn đường hầm vào Máy chủ A và muốn kết nối với máy chủ B, bạn nhập vào trình duyệt của mình bất kỳ địa chỉ nào bạn sẽ nhập vào Trình duyệt chạy trên Máy chủ A. Nếu trình duyệt chạy trên máy chủ A không thể kết nối với Máy chủ B (nếu quá trình trên Máy chủ B chỉ nghe trên 127.0.0.1) sau đó bạn vẫn không thể kết nối. Có vẻ như bạn chỉ có một máy chủ, nhưng tôi muốn chắc chắn rằng điều này là rõ ràng.

Nếu bạn chỉ có một máy chủ, bạn kết nối với nó bằng kết nối Động, đặt proxy của bạn. Sau đó, bạn sẽ có thể nhập "localhost: 1234" (ví dụ) vào trình duyệt và nó sẽ kết nối với dịch vụ đang chạy trên máy chủ từ xa trên cổng 1234.

Lưu ý bên Securit: Không bao giờ không bao giờ thiết lập máy chủ nơi root có thể SSH vào! Lỗ hổng bảo mật nghiêm trọng. Tạo một tài khoản người dùng bình thường (người được phép su hoặc sudo) và SSH là người dùng đó.


2
Bạn đang sử dụng -L 1234 (chuyển tiếp cổng cục bộ) khi bạn nên sử dụng -D 1234 (chuyển tiếp cổng động). Và có lẽ cũng tránh sử dụng -g, -g có nghĩa là các máy chủ từ xa có thể kết nối với phía trước của bạn, đây không phải là điều bạn muốn nếu bạn đang làm điều này từ máy trạm của mình.
Mattias Ahnberg

Cảm ơn, Chris. Tôi đã thử nó. Tôi không thể sử dụng lệnh ssh chỉ với một cổng được chỉ định. Nó trả về một lỗi: "Đặc tả chuyển tiếp cục bộ xấu '1234'"
brains_at_work

@ matthias-ahnberg: Tuyệt vời, điều đó đã tạo nên mánh khóe. với tính năng chuyển tiếp động, giờ đây tôi có thể sử dụng cổng như một proxy và localhost: các cuộc gọi someport được hướng đến máy chủ từ xa.
brains_at_work

@MattiasAhnberg Wow, thật là một bộ não. Cảm ơn bạn đã sửa chữa.
Chris S

Tôi đã làm theo quy trình này nhưng gặp lỗi "Kết nối được đặt lại" trong firefox.
Rivu

23

Bạn có thể chỉ định tên bằng cách sử dụng thực tế bộ điều hợp loopback của bạn về cơ bản sẽ trả lời bất kỳ địa chỉ nào trong mạng 127.0.0.0/8.

Vì vậy, thay vì liên kết với cổng 4321, bạn có thể liên kết với 127.1.2.3:4321. Sau đó, chỉ cần thiết lập một mục nhập máy chủ ánh xạ tên đến địa chỉ loopback mà bạn đã sử dụng để foo.bar ánh xạ tới 127.1.2.3.

Trong cấu hình SSH trên máy trạm quản trị của tôi, tôi có nhiều đường hầm được định cấu hình để chúng liên kết với một số địa chỉ trong phạm vi loopback và tôi có các mục trong tệp máy chủ của mình để tôi mở song song nhiều đường hầm bằng cách sử dụng cùng một cổng và phân biệt giữa chúng thông qua Tên.

Vì vậy, nếu bạn kết nối như thế này

ssh root@my.server.ip -g -L 127.1.2.3:4321:localhost:28017

Và tập tin máy chủ của bạn có một dòng như thế này.

127.1.2.3 my.tunnel.name

Sau đó, bạn sẽ có thể kết nối với my.tunnel.name:4321 từ máy cục bộ của bạn.

Nếu bạn có thêm không gian địa chỉ IP trên mạng, máy khách ssh của bạn được kết nối với bạn thậm chí có thể gán địa chỉ phụ cho giao diện Ethernet của bạn và sử dụng một trong các IP thực của bạn, sau đó thiết lập các mục trong DNS nếu bạn muốn các hệ thống khác có thể để sử dụng đường hầm SSH của bạn.

Tùy chọn -L -L [bind_address:]port:host:hostportsẽ cho phép bạn sử dụng bất kỳ địa chỉ IP hợp lệ nào trên hệ thống cục bộ để liên kết. Bạn cũng cần bao gồm -gtùy chọn nếu bạn muốn các máy chủ khác có thể kết nối thông qua đường hầm ssh của bạn.


Tôi đã phải thêm ip vào loopback của tôi trong osx. ifconfig l0 alias 127.0.1.1 255.255.255.0nếu không thì mẹo tuyệt vời!
sùng đạo

1
Nếu bạn không muốn tạo shell, hãy chạy -Nở cuối lệnh. Bằng cách này, bạn dễ nhớ rằng đó là một đường hầm, không chỉ là bất kỳ kết nối SSH nào.
mlissner

Khi sử dụng, 127.1.2.3tôi phải thực hiện điều này trên macbook của mình : ifconfig lo0 alias 127.1.2.3 255.255.255.0, thêm 127.1.2.3địa chỉ mới trên giao diện lo0.
Donn Lee

5

Tạo một chuyển tiếp cổng cấp ứng dụng động (về cơ bản là proxy) với đường hầm SSH của bạn và sau đó trỏ các ứng dụng của bạn thông qua ứng dụng này. Để tạo một đường hầm động, kết nối như sau:

ssh user@host.domain.com -D 127.0.0.1:31337

Sau đó định cấu hình ứng dụng của bạn để sử dụng ứng dụng này làm proxy SOCKSv5.

Nếu bạn muốn một tên máy chủ bị ràng buộc với điều này, chỉ cần thêm /etc/hostscác mục trỏ đến 127.0.0.1, nhưng một cách đẹp hơn có thể là thêm 127.0.0.2 cho đường hầm đầu tiên và một mục nhập máy chủ cho mục này, 127.0.0.3 cho lần thứ hai đường hầm và một mục nhập máy chủ riêng cho cái này, v.v. Nếu bạn thêm bí danh cho 127.0.0.1, đôi khi bí danh này sẽ xuất hiện trong các lệnh tra cứu khác của localhost có thể gây nhầm lẫn!

Để sử dụng dễ dàng điều này trong trình duyệt web, bạn có thể sử dụng một addon proxy, như một ví dụ tôi thích trình duyệt web Chrome và đối với điều này tôi sử dụng một addon được gọi Proxy Switchy!. Bạn có thể tải xuống tại đây:
https://chrom.google.com.vn/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj

Trong cấu hình của addon này, tôi có thể xác định một số proxy riêng biệt và sau đó liên kết các biểu thức thông thường của máy chủ / URL để sử dụng một số proxy nhất định, theo cách này tôi sẽ luôn được chuyển hướng chính xác qua các đường hầm bên phải mà không phải chuyển đổi thủ công. Xin vui lòng cho tôi biết nếu bạn cần làm rõ thêm về bất kỳ bước nào!


Cảm ơn các mẹo bổ sung. Vì tôi cũng sử dụng Chrome nên tôi cũng không phải mở FireFox.
brains_at_work
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.