我知道ssh进入EC2实例的步骤。但我认为我的大学防火墙阻塞了22号港口。
有没有办法在不请求管理员的情况下连接到我的实例?
我能做些什么来弄清楚什么阻碍了我?
答案 0 :(得分:2)
正如所建议的那样,在评论中,您应该验证问题是在近端还是远端。 tcptraceroute
实用程序是适用于此的工具。
$ sudo tcptraceroute hostname_or_ip 22
尝试建立到目标端口的TCP连接(22),但将IP生存时间(TTL)标志设置为人为的低值(从1开始,然后递增1)以提示每个路由器连接尝试遭遇将数据包拒绝给您,因为它基本上断定数据包已通过太多路由器而不应再转发。
这并不总是正常工作(由于某些网络硬件中不兼容的IP堆栈),因此很好地测试该工具是否对您的位置有用:
$ sudo tcptraceroute google.com 80
如果您在此请求中获得了有效的跟踪内容,那么您可以非常自信地确认SSH测试的有效性。
还有其他方法可以隧道连接到ec2实例或将其配置为侦听另一个端口,但如果您被本地LAN阻止,您可能会发现这些方法也被阻止......并且,重新配置您的实例如果你不能通过SSH连接它将会很棘手。
但是,如果您正在启动一个新实例,则可以在启动时自定义它。
您在启动实例时在AWS控制台中看到的EC2 User Data窗口使您有机会在实例首次启动时运行自定义脚本。
如果第一行以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需要Generic Route Encapsulation (GRE)协议才能传输您的隧道数据。 GRE是IP,但既不是TCP也不是UDP,所以不能在Classic EC2中使用它。
此外,iirc,用户数据技巧仅在最初启动实例时有效。
答案 1 :(得分:2)
要测试您的大学防火墙是否阻止TCP 22,请尝试www.ismyportblocked.com
IsMyPortBlocked测试可能被防火墙过滤/阻止的阻止的OUTBOUND端口。