AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 450841
Accepted
vowel-house-might
vowel-house-might
Asked: 2012-11-22 05:15:33 +0800 CST2012-11-22 05:15:33 +0800 CST 2012-11-22 05:15:33 +0800 CST

在 AWS 上,我是否必须在 EC2 实例的防火墙和安全组中打开端口?

  • 772

如果我将我的 SSH 端口从 22 更改为 23453,我将无法再通过 ssh 登录。

更详细地说,我在 Amazon Web Services 上使用 Red Hat EC2 实例。这是我对全新安装所做的第二个更改(第一个更改是添加非根用户)。

我可以使用 Git Bash 和本地 .ssh/config 文件正常使用 ssh,我编辑 /etc/ssh/sshd_config 中当前显示的行

#Port 23453

说

Port 23453

然后重启sshd

sudo service sshd restart

然后我在 .ssh/config 文件中添加一行“Port 23453”

Host foo 
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key

如果我打开另一个 Git Bash shell(不关闭现有连接)并尝试通过 ssh 进入我的实例(使用 ssh foo),我会看到以下错误:

ssh: connect to host my-ec2-public-DNS port 23453: Bad file number

附加到此实例的安全组有两个条目,都是 TCP

22 (SSH) 0.0.0.0/0

23453 0.0.0.0/0

我最好的猜测是该端口仍被我的防火墙阻止。

的输出sudo iptables -L如下

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

这对我来说看起来很开放。

更新

添加 iptables 规则后

iptables -A INPUT -p tcp --dport 23453 -j ACCEPT

再试一次,仍然没有运气。

的输出iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

看起来足够开放。我不完全确定如何查找传入的数据包或端口上的活动。但是netstat -ntlp(作为根)的输出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State PID/Program name
tcp        0      0 0.0.0.0:56137               0.0.0.0:*                   LISTEN      948/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      930/rpcbind
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1012/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1224/master
tcp        0      0 0.0.0.0:23453               0.0.0.0:*                   LISTEN      32638/sshd
tcp        0      0 :::36139                    :::*                        LISTEN      948/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      930/rpcbind
tcp        0      0 ::1:631                     :::*                        LISTEN      1012/cupsd
tcp        0      0 :::23453                    :::*                        LISTEN      32638/sshd

在我看来,这似乎是在 23453 上显示 sshd。

我再次检查了该实例是否在安全组中打开了端口(端口:23453,协议:tcp,来源:0.0.0.0/0)

还有什么可能导致通过 SSH 连接失败?

干杯

尸检

我现在可以连接了。这是 iptables 中缺少的规则。现在的输出iptables -L如下所示:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453 state NEW
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ssh
  • 4 4 个回答
  • 34939 Views

4 个回答

  • Voted
  1. Best Answer
    melsayed
    2012-11-22T05:29:11+08:002012-11-22T05:29:11+08:00

    您的实例防火墙没有打开此端口。尝试以下命令:

    iptables -I INPUT 3 -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 23453 -m state --state New -j ACCEPT
    

    请注意,需要保存 iptables 规则才能在重启后保留。在 RHEL 上是:

    /sbin/service iptables save
    
    • 13
  2. Farhan
    2012-11-22T05:23:30+08:002012-11-22T05:23:30+08:00

    添加 iptables 规则

    iptables -I INPUT 1 -p tcp --dport 23435 -j ACCEPT
    

    它通过端口 23435 接受来自任何主机的流量,并尝试 ssh,如果您看到任何数据包或活动,则意味着数据包正在到达您的服务器。

    如果您没有看到任何数据包,则表示 AWS 安全组没有允许您的端口的规则。

    但如果您看到此规则上的流量(按iptables -nvL),则必须运行“netstat -ntlp”并验证 SSH 守护进程是否在端口 2435 和 上运行0.0.0.0/0。

    希望这些步骤可以解决问题。如果仍然没有,那么告诉我。

    • 2
  3. Waleed Hamra
    2012-11-22T05:42:27+08:002012-11-22T05:42:27+08:00

    您确定安全组设置正确吗?您是否单击“应用更改”?许多人忘记实际应用他们的更改 :)

    “Bad file number”通常表示连接超时,您的 iptables 设置看起来是正确的。

    • 1
  4. Homezar
    2013-02-26T06:23:31+08:002013-02-26T06:23:31+08:00

    万一有人因为更改了 ssh 的默认端口而偶然发现了这个主题,这里有一个适合我的解决方案:

    1. 为了绕过公司防火墙,我在 上将端口更改为 80 /etc/ssh/sshd_conf。
    2. 不幸的是,Apache 已经安装在那个实例上,所以我不能再使用 ssh 了。
    3. 我从实例中分离了卷。
    4. 将其附加到另一个实例
    5. 安装它,更改配置文件中的端口
    6. 分离它,将它重新附加到旧实例上
    7. 重新启动:一切都很好:D
    • -1

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve