簡體   English   中英

我無法從LAN SSH進入我的Amazon EC2實例,我認為這阻塞了端口22

[英]Can't SSH into my Amazon EC2 instance from LAN which I think is blocking port 22

我知道ssh進入EC2實例的步驟。 但是我認為我的大學防火牆正在阻止端口22。

有什么方法可以連接到我的實例,而無需請求管理員?

我該怎么做才能找出阻礙我的因素?

如建議的那樣,在注釋中,您應該驗證問題是在近端還是遠端。 tcptraceroute實用程序是適合此目的的工具。

$ sudo tcptraceroute hostname_or_ip 22

這會嘗試建立到目標端口(22)的TCP連接,但會將IP生存時間(TTL)標志設置為人為的低值(從1開始,然后遞增1),以提示您嘗試連接的每個路由器拒絕將數據包發回給您,因為它基本上得出的結論是該數據包已通過過多的路由器,因此不應再轉發。

這有時不能正常工作(由於某些網絡硬件中的IP堆棧不兼容),因此可以從以下位置很好地測試該工具是否對您有用:

$ sudo tcptraceroute google.com 80

如果您在此請求中獲得了看起來像有效跟蹤的內容,那么您可以對SSH測試的有效性充滿信心。

還有其他方法可以隧穿到ec2實例中或將其配置為偵聽其他端口,盡管如果您被本地LAN阻止,則可能會發現這些方法也被阻止了……而且,重新配置實例將非常棘手如果您無法SSH到它。

但是,如果您要整理一個新實例,則有一種在啟動時對其進行自定義的方法。

啟動實例時在AWS控制台中看到的EC2 用戶數據窗口使您有機會在實例首次啟動時運行自定義腳本。

如果此行的第一行以shebang(#!)開頭,則EC2假定它是Shell腳本。 使用#!/ bin / bash啟動該文件,其余文件將在第一次啟動時執行。 例如,您可以使用它來調整/etc/ssh/sshd_config ,將sshd配置為偵聽22以外的端口(例如2222),然后重新啟動sshd。 這可以通過在用戶數據中包含類似內容來實現。

#!/bin/bash

/usr/bin/perl -pi -e 's/^Port\s+22$/Port 2222/' /etc/ssh/sshd_config
/usr/sbin/service sshd restart

如果有幫助,sshd服務將在端口2222而不是端口22上偵聽。

例如,您還可以發揮創意,並使用此功能來安裝和配置pptpd,這將允許您使用點對點隧道協議進入服務器。但是,要使PPTP在EC2中工作,您必須在VPC中啟動實例,因為Classic EC2安全組僅允許TCP,UDP和ICMP。 為了使PPTP正常運行,您必須能夠打開實例的所有協議-PPTP需要通用路由封裝(GRE)協議才能傳輸隧道數據。 GRE是IP,但既不是TCP也不是UDP,因此無法在Classic EC2中使用它。

另外,iirc,“用戶數據”技巧僅在實例啟動時有效。

要測試您的大學防火牆是否阻止了TCP 22,請嘗試www.ismyportblocked.com

IsMyPortBlocked測試可能被防火牆過濾/阻止的被阻止的出站端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM