簡體   English   中英

嘗試讓兩個 Azure VM 在不同端口上通信時出現“無法連接到遠程主機:連接被拒絕”錯誤

[英]"Unable to connect to remote host: Connection refused" error when trying to get two Azure VMs to communicate on different ports

我設置了兩個 Azure 虛擬機來測試我制作的程序。 該程序將在兩個虛擬機上運行,執行同步操作,要求虛擬機使用 TCP 協議在不同端口上相互通信。 為了訪問我的 Azure 虛擬機,我使用本地計算機上的 Putty 在端口 22 上通過 SSH 連接到它們。 這些虛擬機在同一個子網上,我試圖讓它們通過他們的公共 IP 相互通信。 我已經設置了兩個 VM 入站規則以在任何端口上接受來自彼此的消息,這里使用任何協議就是一個例子

在我的程序執行過程中,我遇到以下錯誤“無法連接到遠程主機:連接被拒絕”。 在這之后,我做了一些調查。 首先,我讓兩個虛擬機互相 ping,他們成功地做到了。 然后,在兩個虛擬機上,我運行命令“telnet other.ip 22”,其中 other.ip 是其他虛擬機公共 IP。 這似乎有效,如圖所示 當我運行“telnet other.ip 6000”或除 22 之外的任何其他端口時,我收到相同的錯誤“無法連接到遠程主機:連接被拒絕”。 我的理由是,如果我可以在任何端口上運行“telnet”命令,那么我的程序也可能會工作。

我不太確定此時我的問題可能是什么,而且我的互聯網搜索對我沒有幫助。 鑒於我當前的入站規則,我懷疑是否存在通信請求積壓的端口問題。 此外,我確實嘗試更改我的入站規則,以便我的虛擬機可以使用任何協議從任何來源接收任何端口上的消息,這會導致相同的錯誤(然后我將它從“任何來源”更改回只有我的另一個出於安全目的,VMs public IP)。

根據您的描述,您可以檢查兩點:

  • 如果 VM 內部有任何防火牆阻止來自外部網絡的端口 6000 的連接。例如,如果您使用的是 Ubuntu VM,您可以參考Ubuntu 18.04 上的如何使用 UFW 設置防火牆 然后使用命令sudo ufw disable防火牆或添加防火牆規則來驗證這一點。
  • 在 Linux 上運行命令以查看打開的端口。 sudo netstat -tulpn | grep LISTEN sudo netstat -tulpn | grep LISTEN 您應該在 output 中看到端口 6000。 如果不是,則可能意味着您的程序沒有很好地啟動。

如果您有任何疑慮,請告訴我。

檢查您的防火牆規則。 如果您的組織打算使用防火牆,則在入站和出站鏈中添加端口 6000。

只有在監聽 state 時,您才能使用端口號連接遠程主機。

sudo netstat -tulpn | grep 聽。

暫無
暫無

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

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