Có thể SSH qua cổng 80 không?


20

Tôi đứng sau một tường lửa mạng không cho phép tôi đi qua cổng mặc định. Do đó, tôi không thể đẩy bất kỳ chi nhánh bzr nào vào kho lưu trữ của mình. Tôi muốn biết nếu có thể bằng cách nào đó ủy quyền ssh thông qua cổng 80 để tôi có thể đẩy các nhánh.

Tôi nghe nói rằng corkscrew cho phép bạn làm điều đó nhưng tôi không chắc làm thế nào để làm điều đó chính xác.

Nếu bạn biết bất kỳ máy chủ proxy hoạt động nào cho phép bạn làm điều đó, vui lòng đề cập đến chúng.


2
man sshtiết lộ cổng: host: hostport. Vì vậy, hãy thử ssh 80:server.comhoặc như vậy.
MarkovCh1

Đó là để thiết lập một đường hầm thông qua -L hoặc -R. Vì vậy, bạn cần một hộp khác để vượt qua nó.
Caesium

Câu trả lời:


19

Một tường lửa công ty tốt sẽ kiểm tra lưu lượng bất kể cổng vì vậy việc thay đổi cổng có thể không hoạt động.

Nếu bạn có quyền kiểm soát máy chủ và vẫn muốn dùng thử, bạn có thể thay đổi cổng sshd thành cổng 80. Cảnh báo Nếu bạn có thứ gì khác chạy trên cổng 80 (trên máy chủ) thì điều này sẽ không hoạt động và có khả năng bạn sẽ hoàn toàn mất quyền truy cập SSH vào máy chủ!

Bạn sẽ cần chỉnh sửa /etc/ssh/sshd_configvà thay đổi Portthành 80. Sau đó chạy

sudo restart ssh

Và sau đó kết nối:

ssh user@host -p80

Đường dẫn bzr của bạn sau đó sẽ trông giống như: bzr+ssh://host:80/path/


Một phương pháp khác là sử dụng WebDav. Điều này sẽ khắc phục hoàn toàn vấn đề tường lửa vì tất cả xảy ra trên Cổng 80 nhưng nó sẽ yêu cầu bạn phải chạy Apache và thiết lập một số điều:

  1. Cài đặt WebDav
  2. Di chuyển chi nhánh của bạn vào đúng nơi
  3. Sử dụng plugin bzr-webdav để kết nối

VPN có thể là một tùy chọn nhưng nếu sshbị khóa, tôi cũng hy vọng điều đó sẽ bị loại trừ.

Bạn có thể chỉ muốn có một từ với quản trị viên mạng của bạn. Bạn cần phải làm một cái gì đó và họ đang ngăn cản bạn. Nếu họ có lý do để chặn ssh, có khả năng họ sẽ xem bất kỳ nỗ lực cực đoan nào để phá vỡ nó một cách khá tiêu cực ...

Nói tóm lại, có thể an toàn hơn khi nói chuyện với họ.


7
+1 để thảo luận về nhu cầu của bạn với bộ phận CNTT của bạn. Trong nhiều môi trường, bao gồm cả tôi, loại hoạt động này sẽ là căn cứ để chấm dứt.
Panther

1
Ngoài ra, nếu anh ta làm cho máy chủ ssh nghe trên một cổng khác, anh ta có thể làm cho nó nghe trên cả hai cổng 22 và 80 bằng cách có hai Portdòng, với một dòng cho mỗi cổng trong /etc/ssh/sshd_configtệp.
Azendale

Tôi sẽ tránh lập danh sách (danh sách dài và thảo luận về một số mục trên đó có thể rất nhanh chóng mang tính chính trị), nhưng câu hỏi này bao gồm nhiều tình huống bên cạnh việc một nhân viên tìm cách phá vỡ chính sách của công ty được thực hiện bởi bộ phận CNTT của công ty. Tôi là tất cả những người thảo luận về nhu cầu công việc của họ với CNTT, nhưng điều đó không phải lúc nào cũng có thể áp dụng được và đôi khi các bộ phận CNTT thậm chí trả lời: "Tốt thôi, nhưng chúng tôi không thay đổi bất cứ điều gì để phù hợp với bạn." Một cách riêng biệt, cổng 22 bị chặn bởi VPN là không hợp lý, vì vậy tôi nghĩ rằng nó đáng để thử.
Eliah Kagan

@Panther Sau đó, một số người sẽ còn hạnh phúc hơn khi kết thúc chế độ công ty đó.
NeverEinatingQueue

15

SSH thông qua proxy

Nếu tường lửa cho phép bạn, bạn có thể chạy ssh đến bất kỳ cổng nào, nhưng điều đó đòi hỏi máy chủ ssh phải lắng nghe trên cổng đó. Cổng 80 dường như không hoạt động, bởi vì hầu hết các địa điểm có tường lửa đều phân tích lưu lượng truy cập trên cổng đó và chặn mọi thứ không phải là HTTP. Nhưng cổng 443, thường là cổng HTTPS, thường hoạt động, vì SSH và HTTPS trông rất giống nhau để lọc phần mềm, vì vậy phiên SSH của bạn sẽ trông giống như phiên HTTPS. (Có thể phân biệt HTTPS và SSH, vì vậy điều này sẽ không hoạt động nếu tường lửa đủ tinh vi.)

Nếu bạn có quyền kiểm soát máy chủ, hãy làm cho nó lắng nghe trên cổng 443 ngoài 22 (cổng ssh bình thường). Bạn có thể định cấu hình cổng trong /etc/ssh/sshd_config: thêm một dòng

Port 443

ngoài những thứ Port 22đó nên có Lưu ý rằng điều này giả định rằng máy chủ ssh không phải là máy chủ HTTPS. Nếu đúng như vậy, bạn sẽ cần tìm một cổng khác mà tường lửa cho phép bạn sử dụng hoặc tìm máy chủ ssh khác (xem chuyển tiếp bên dưới).

Nếu bạn không cần đặt proxy web trong trình duyệt web của mình, thì bạn có thể thử kết nối trực tiếp:

ssh -p 443 myserver.example.com

Nếu nó hoạt động, xác định một bí danh trong ~/.ssh/config:

Host myserver
HostName myserver.example.com
Port 443

Nếu bạn cần đặt proxy web trong trình duyệt web của mình, hãy báo cho ssh đi qua proxy. Cài đặt nút chai . Xác định một bí danh như thế này trong đó ~/.ssh/config, nơi http://proxy.acme.com:3128/bạn sử dụng proxy cho HTTPS ở bên ngoài (thay thế bằng tên và cổng máy chủ phù hợp):

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH qua SSH

Nếu bạn có thể đến một số máy bên ngoài bằng một trong các kỹ thuật trên nhưng không phải với máy bạn quan tâm, hãy sử dụng nó để chuyển tiếp kết nối. Giả sử bạn có thể ssh đến một máy được gọi mygatewayvà bạn muốn truy cập máy chủ SSH mytarget, cài đặt netcat-openbsd trên mygateway(hoặc, nếu nó không chạy Ubuntu, hãy đảm bảo rằng nó có nclệnh). Đặt cái này trong ~/.ssh/config:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH sang Apache

Nếu máy chủ bạn muốn kết nối đang chạy Apache và nghe trên cổng 443 và bạn có quyền kiểm soát máy chủ đó, bạn có thể thiết lập Apache này để chấp nhận kết nối SSH và chuyển tiếp chúng. Xem SSH đường hầm qua HTTP (S) .


bạn cũng có thể sử dụng nc thay vì corkscrew cho https, đúng chứ? stackoverflow.com/a/15577758/32453
rogerdpack

3

Tôi vừa đọc một giải pháp tinh vi ở đây:

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html

Bạn có thể SSH về nhà trên cổng 80 ngay cả khi máy chủ nhà của bạn cũng chạy máy chủ web trên cổng 80.

Giả sử máy chủ gia đình chạy Apache. Ý tưởng liên quan đến việc kích hoạt mod_proxy trong máy chủ của bạn, sau đó hạn chế kết nối với localhost (proxy.conf):

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

Bây giờ bạn có thể thực hiện yêu cầu kết nối HTTP với localhost và máy chủ web sẽ thiết lập một đường hầm cho bạn, bạn chỉ cần đảm bảo tất cả lưu lượng truy cập đều đi qua proxy của bạn:

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

Đảm bảo các kết nối localhost tới SSH không được đặc quyền (để tránh cho người lạ vào ...)

Điều này sẽ hoạt động nếu bạn ở phía sau một bộ định tuyến chỉ cho phép cổng 80 ra.

Nếu bạn đứng sau một proxy (vì vậy bạn cần đặt proxy trong trình duyệt của mình để lấy web), trước tiên bạn sẽ cần thiết lập một đường hầm đến máy chủ của riêng bạn, sau đó đưa ra một yêu cầu CONNECT khác trong đường hầm này để đến máy chủ của bạn. Điều này là phức tạp hơn, bạn sẽ cần phải sử dụng 2 netcats cho việc này.

Mọi thứ đều có thể, nhưng hãy làm điều đó vì rủi ro của riêng bạn ...

CẬP NHẬT:

Hoặc đơn giản, chỉ cần sử dụng một ứng dụng web cung cấp cho bạn SSH thông qua trình duyệt. http://en.wikipedia.org/wiki/Web-basing_SSH


2

Nếu bạn không có quyền kiểm soát máy chủ để thay đổi cổng SSH thành cổng 80 hoặc nếu bạn không thể SSH qua cổng 80 vì tường lửa chặn bạn chuyển dữ liệu đó qua cổng 80, bạn có thể thử TOR.

TOR là một mạng lưới khổng lồ. Máy tính của bạn kết nối với một máy tính khác ở đâu đó trên thế giới, máy tính đó kết nối với một máy tính khác cho đến khi đến được máy chủ SSH. Đây là tất cả thân thiện với tường lửa, xảy ra trên cổng 443 (công ty của bạn không chặn, hoặc nếu không .. tốt, điều đó không thông minh lắm đối với họ). Đó thực sự chỉ là một proxy hoặc VPN khổng lồ và nó cũng được mã hóa. Bằng cách này, bạn có thể truy cập bất kỳ máy chủ nào trên bất kỳ cổng nào (cũng là SSH của máy chủ trên cổng 22).

Hãy xem nó trực tuyến tại www.torproject.org .


2

Tôi xin lỗi, tôi phải chơi quỷ ủng hộ.

Tôi biết rằng rất có thể có một lý do để làm điều này, tuy nhiên, tại sao quản trị mạng / tường lửa của bạn không mở cổng cụ thể mà bạn đang tìm kiếm? Từ quan điểm bảo mật, bạn có muốn có cơ hội kiểm tra web sẽ bỏ lỡ bất cứ điều gì không? Nếu nó được định cấu hình để vượt qua cổng 80 cho lưu lượng truy cập và bạn đang tự làm hại mình.

Tôi đồng ý với một vài gợi ý ở trên, trong đó như một điểm đến điểm vpn có thể là một lựa chọn an toàn hơn. Một lần nữa, từ quan điểm bảo mật, tôi sẽ muốn biết lý do bạn thực sự bỏ qua các chính sách bảo mật và lý do tại sao bạn không thể đặt máy chủ của mình trong dmz hoặc xương sống để truy cập. Chỉ mình tôi. Chúc may mắn.


2
Không phải lúc nào cũng có thể nói chuyện với quản trị viên mạng và quản trị viên mạng không phải lúc nào cũng hợp lý.
Jeremy Bícha

Ví dụ: nếu bạn đang ngồi trong quán cà phê, được kết nối với WiFi, nhưng quản trị viên bị hạn chế truy cập (và bạn vẫn cần kết nối ngay bây giờ).
cũ-ufo
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.