Điểm:0

Làm cách nào để chuyển tiếp cổng 8080 từ máy chủ ở xa đến máy khách từ máy khách bằng ssh đường hầm?

lá cờ ke

Tôi đã cài đặt GitLab trong docker trên một máy ở xa. Bây giờ tôi muốn chuyển tiếp cổng 8080 từ máy ở xa này sang cổng cục bộ 8080 của tôi.

Trên máy ở xa:

sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 8080:80 --publish 2222:22 --name gitlab --restart always --volume $GITLAB_HOME/config:/etc /gitlab --volume $GITLAB_HOME/logs:/var/log/gitlab --volume $GITLAB_HOME/data:/var/opt/gitlab gitlab/gitlab-ce:latest

Trên máy cục bộ của tôi:

ssh -N -o "ExitOnForwardFailure yes" -R 8080:localhost:8080 someuser@the-distant-server -vvv

Tôi nhận được lỗi sau đây:

gỡ lỗi1: cam kết: mạng
debug3: nhận gói: gõ 80
gỡ lỗi1: client_input_global_request: rtype [email protected] muốn_reply 0
debug3: nhận gói tin: gõ 4
gỡ lỗi1: Điều khiển từ xa: /home/someuser/.ssh/authorized_keys:1: tùy chọn chính: chuyển tiếp tác nhân chuyển tiếp cổng pty người dùng-rc x11 chuyển tiếp
debug3: nhận gói: gõ 82
debug1: lỗi chuyển tiếp từ xa cho: lắng nghe 8080, kết nối máy chủ cục bộ: 8080
Lỗi: không thể chuyển tiếp cổng từ xa cho cổng nghe 8080

Và thực sự, trong /var/log/auth.log, Tôi nhận được lỗi sau đây:

Ngày 9 tháng 7 16:51:42 remote-server sshd[2723782]: Đã chấp nhận khóa công khai cho một số người dùng từ 192.168.200.182 cổng 44850 ssh2: RSA SHA256:
Ngày 9 tháng 7 16:51:42 máy chủ từ xa sshd[2723782]: pam_unix(sshd:session): phiên được mở cho người dùng someuser bởi (uid=0)
Ngày 9 tháng 7 16:51:42 remote-server systemd-logind[1083]: Phiên mới 116923 của người dùng someuser.
Ngày 9 tháng 7 16:51:42 remote-server systemd[2723795]: pam_unix(systemd-user:session): phiên được mở cho người dùng someuser bởi (uid=0)
Ngày 9 tháng 7 16:51:43 máy chủ ở xa sshd[2723812]: error: bind [127.0.0.1]:8080: Địa chỉ đã được sử dụng
Ngày 9 tháng 7 16:51:43 sshd máy chủ ở xa [2723812]: lỗi: channel_setup_fwd_listener_tcpip: không thể nghe cổng: 8080
Ngày 9 tháng 7 16:51:43 máy chủ ở xa sshd[2723782]: pam_unix(sshd:session): đóng phiên cho người dùng someuser
Ngày 9 tháng 7 16:51:43 remote-server systemd-logind[1083]: Phiên 116923 đã đăng xuất. Đang chờ các tiến trình thoát ra.
Ngày 9 tháng 7 16:51:43 remote-server systemd-logind[1083]: Đã xóa phiên 116923.

Nó nói với tôi bind [127.0.0.1]:8080: Địa chỉ đã được sử dụng.

  1. Tôi không hiểu làm thế nào tôi có thể nghe cổng 8080 từ máy ở xa nếu không có quy trình nào có thể ghi vào cổng đó. Tôi nghĩ rằng tôi đã hiểu sai về cách cổng/nghe/viết/ssh hoạt động ở đây.
  2. Làm thế nào tôi có thể sửa lỗi ssh lệnh để làm cho đường hầm này hoạt động và truy cập phiên bản GitLab trên của tôi 127.0.0.1:8080?
Điểm:1
lá cờ kz

Câu trả lời ngắn: sử dụng công tắc ssh -L thay vì -R.

Giải thích: Trên máy ở xa, bạn mở một bộ chứa docker xuất bản cổng 8080. Điều này có nghĩa là một cách chi tiết, máy chủ docker sẽ mở một NGHE socket và đợi các kết nối đến.

Có hai loại chuyển tiếp cổng: -L và -R:

  • -L mở một ổ cắm nghe trên máy cục bộ của bạn và chuyển tiếp kết nối đến này qua đường hầm ssh và mở một kết nối trên máy chủ từ xa đến địa chỉ đã chỉ định (máy chủ cục bộ:8080 trong trường hợp này, đó chính xác là những gì bạn muốn)
  • -R hoạt động theo cách khác: nó đợi các kết nối đến trên máy từ xa và chuyển tiếp nó đến máy chủ cục bộ. Tất nhiên, điều này không thành công vì bạn đã có một ổ cắm nghe nằm trên địa chỉ này (bộ chứa docker!)

Bạn luôn phải suy nghĩ xem ai là người bắt đầu kết nối. Phiên bản Gitlab có thể truy cập được thông qua trình duyệt, điều đó có nghĩa là bạn địa phương trình duyệt cố gắng mở kết nối, do đó bạn phải có ổ cắm lắng nghe cục bộ.

vinzee avatar
lá cờ ke
Đây là lần đầu tiên tôi đọc về ổ cắm `LISTEN` khi tìm kiếm lời giải thích về đường hầm ssh. Nó làm cho mọi thứ rõ ràng hơn nhiều.
Martin avatar
lá cờ kz
bạn chắc chắn nên xem những kiến ​​thức cơ bản về mạng TCP. Không có gì ngạc nhiên khi bạn hiểu sai các tùy chọn đường hầm ssh ...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.