亞馬遜的PuTTY鏈接AWS出現network error connection refused,終極解決方案。

使用PuTTY鏈接AWS的時候,一直出現network error connection refused。百度了這個問題,你們都說是SSH要設置成22。可是我已經設置過了,爲何仍是遇到這個問題呢?html

原來官方早已給了答案。你們看下邊。java

排查實例的鏈接問題

下面是在您嘗試鏈接到實例時可能遇到的問題與錯誤消息。ubuntu

有關 Windows 實例的更多幫助信息,請參閱Amazon EC2 用戶指南(適用於 Microsoft Windows 實例)中的排除 Windows 實例的故障api

您還能夠在 Amazon EC2 forum搜索答案和發佈問題。瀏覽器

鏈接到您的實例時出錯:鏈接超時

若是在鏈接到您的實例時看到如下錯誤消息:Network error: Connection timed out 或Error connecting to [instance], reason: -> Connection timed out: connect,請嘗試如下選項:安全

  • 檢查您的安全組規則。您須要一個安全組規則,該規則容許適當的端口上來自公有 IP 地址的入站流量。服務器

    1. 打開 Amazon EC2 控制檯 https://console.aws.amazon.com/ec2/網絡

    2. 在導航窗格中,選擇 Instances,而後選擇您的實例。ssh

    3. 在 Description 選項卡中的 Security groups 旁邊,選擇 view rules 以顯示有效規則的列表。

    4. 對於 Linux 實例:驗證是否有容許流量從您的計算機到端口 22 (SSH) 的規則。

      對於 Windows 實例:驗證是否有容許流量從您的計算機到端口 3389 (RDP) 的規則。

      若是您的安全組具備容許來自單個 IP 地址的入站流量的規則,則當您的計算機在企業網絡上,或當您經過 Internet 服務提供商 (ISP) 進行鏈接時,此地址可能不是靜態的。請改成指定客戶端計算機使用的 IP 地址的範圍。若是您的安全組沒有上一步中所述的容許入站流量的規則,請向您的安全組添加一個規則。有關更多信息,請參閱受權網絡訪問您的實例

  • [EC2-VPC](我是這一步出錯了)你們設置的時候,特別注意第五步與第六步。

  • 查看子網的路由表。您須要一個路由來將目標在 VPC (0.0.0.0/0) 外的全部數據流發送到 VPC 的 Internet 網關。

    1. 打開 Amazon EC2 控制檯 https://console.aws.amazon.com/ec2/

    2. 在 Description 選項卡中,記下 VPC ID 和 Subnet ID 的值。

    3. 打開 Amazon VPC 控制檯 https://console.aws.amazon.com/vpc/

    4. 在導航窗格中,選擇 Internet Gateways。驗證是否有 Internet 網關鏈接到您的 VPC。若是沒有,請選擇 Create Internet Gateway 並按照指示建立一個 Internet 網關,選擇此 Internet 網關,而後選擇 Attach to VPC 並按照指示將其掛載到您的 VPC。

    5. 在導航窗格中,選擇 Subnets,而後選擇您的子網。

    6. 在 Route Table 選項卡上,驗證帶有 0.0.0.0/0 的路由是否爲目的地,並驗證您的 VPC 的 Internet 網關是否爲目標。若是不是,請選擇路由表的 ID (rtb-xxxxxxxx) 以導航到路由表的 Routes 選項卡,依次選擇 Edit、Add another route,在 Destination 中輸入 0.0.0.0/0,從 Target 中選擇您的 Internet 網關,而後選擇 Save。

  • [EC2-VPC] 檢查子網的網絡訪問控制列表 (ACL)。該網絡 ACL 必須容許適當的端口上來自公有 IP 地址的入站和出站流量。默認網絡 ACL 容許全部入站和出站流量。

    1. 打開 Amazon VPC 控制檯 https://console.aws.amazon.com/vpc/

    2. 在導航窗格中,選擇 Your VPCs。

    3. 在 Summary 選項卡上,找到 Network ACL,選擇 ID (acl-xxxxxxxx),而後選擇 ACL。

    4. 在 Inbound Rules 選項卡上,驗證規則是否容許來自您的計算機的流量。若是不容許,請刪除或修改阻止來自您的計算機的流量的規則。

    5. 在 Outbound Rules 選項卡上,驗證規則是否容許到您的計算機的流量。若是不容許,請刪除或修改阻止到您的計算機的流量的規則。

  • 若是您的計算機在企業網絡上,請詢問網絡管理員內部防火牆是否容許端口 22(對於 Linux 實例)或端口 3389(對於 Windows 實例)上來自您的計算機的入站和出站流量。

    若是您的計算機有防火牆,請驗證其是否容許端口 22(對於 Linux 實例)或端口 3389(對於 Windows 實例)上來自您的計算機的入站和出站流量。

  • 檢查您的實例是否具備公有 IP 地址。若是沒有,您能夠將彈性 IP 地址與您的實例關聯。有關更多信息,請參閱 彈性 IP 地址

  • 檢查實例上的 CPU 負載,服務器可能已超過負載。AWS 自動提供數據,例如 Amazon CloudWatch 指標和實例狀態,您可使用這些數據查看實例上 CPU 的負載狀況;若有必要,還能夠調整負載的處理方式。有關更多信息,請參閱 使用 CloudWatch 監控您的實例

錯誤:服務器沒法識別用戶密鑰

若是您使用 SSH 鏈接到實例

  • 請在鏈接時使用 ssh -vvv 得到三倍的詳細調試信息:

    #ssh -vvv -i [your key name].pem ec2-user@[public DNS address of your instance].compute-1.amazonaws.com

    下列樣本輸出演示了若是您嘗試使用服務器沒法識別的密鑰鏈接實例時您可能會看到的信息:

    open/ANT/myusername/.ssh/known_hosts).
    debug2: bits set: 504/1024
    debug1: ssh_rsa_verify: signature correct
    debug2: kex_derive_keys
    debug2: set_newkeys: mode 1
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug2: set_newkeys: mode 0
    debug1: SSH2_MSG_NEWKEYS received
    debug1: Roaming not allowed by server
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug2: service_accept: ssh-userauth
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug2: key: boguspem.pem ((nil))
    debug1: Authentications that can continue: publickey
    debug3: start over, passed a different list publickey
    debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
    debug3: authmethod_lookup publickey
    debug3: remaining preferred: keyboard-interactive,password
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: boguspem.pem
    debug1: read PEM private key done: type RSA
    debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2
    debug2: we sent a publickey packet, wait for reply
    debug1: Authentications that can continue: publickey
    debug2: we did not send a packet, disable method
    debug1: No more authentication methods to try.
    Permission denied (publickey).

若是您使用 SSH (MindTerm) 鏈接到實例

若是您使用 PuTTY 鏈接到實例

  • 驗證您的私有密鑰 (.pem) 文件已經轉換爲 PuTTY (.ppk) 能夠識別的格式。有關轉換您的私有密鑰的更多信息,請參閱 使用 PuTTY 從 Windows 鏈接到 Linux 實例

    Note

    在 PuTTYgen 中,加載您的私有密鑰文件並選擇 Save Private Key (保存私有密鑰) 而不是 Generate (生成)。

  • 驗證您在鏈接時是否對爲 AMI 使用了正確的用戶名稱。在 PuTTY Configuration (PuTTY 配置) 窗口的 Host name (主機名) 框中輸入用戶名。

    • 對於 Amazon Linux AMI,用戶名稱是 ec2-user

    • 對於 RHEL5 AMI,用戶名稱爲 root 或 ec2-user

    • 對於 Ubuntu AMI,用戶名稱是 ubuntu

    • 對於 Fedora AMI,用戶名稱爲 fedora 或 ec2-user

    • 對於 SUSE Linux,用戶名稱是 root 或 ec2-user

    • 另外,若是 ec2-user 和 root 沒法使用,請與 AMI 供應商覈實。

  • 驗證您的入站安全組規則容許入站流量進入合適的端口。有關更多信息,請參閱受權網絡訪問您的實例

錯誤:未找到主機密鑰,權限被拒絕 (publickey),或者 身份驗證失敗,權限被拒絕

若是您使用 SSH 鏈接到實例並獲得如下任一錯誤:Host key not found in [directory]Permission denied (publickey) 或 Authentication failed, permission denied,請驗證您使用了 AMI 的相應用戶名稱進行鏈接 已爲實例指定正確的私有密鑰 (.pem) 文件。對於 MindTerm 客戶端,在 Connect To Your Instance (鏈接到您的實例) 窗口中的 User name (用戶名稱) 框中輸入用戶名稱。

正確的用戶名以下所示:

  • 對於 Amazon Linux AMI,用戶名稱是 ec2-user

  • 對於 RHEL5 AMI,用戶名稱爲 root 或 ec2-user

  • 對於 Ubuntu AMI,用戶名稱是 ubuntu

  • 對於 Fedora AMI,用戶名稱爲 fedora 或 ec2-user

  • 對於 SUSE Linux,用戶名稱是 root 或 ec2-user

  • 另外,若是 ec2-user 和 root 沒法使用,請與 AMI 供應商覈實。

請確認您使用的私有密鑰文件對應於您啓動實例時選擇的密鑰對。

  1. 打開 Amazon EC2 控制檯 https://console.aws.amazon.com/ec2/

  2. 選擇實例。在 Description 選項卡上,驗證 Key pair name 的值。

  3. 若是您啓動實例時沒有指定密鑰對,則能夠終止實例並啓動新實例,從而確保指定密鑰對。若是這是您一直使用的實例,但您再也不具備密鑰對的 .pem 文件,則可使用新的密鑰對取代該密鑰對。有關更多信息,請參閱 丟失私有密鑰時鏈接到 Linux 實例

錯誤:未保護的私鑰文件

必須保護您的私鑰文件,防止其餘任何用戶對其進行讀寫操做。若是除您外其餘任何人都可以讀取或寫入您的私鑰,則 SSH 會忽略您的密鑰,而且您會看到如下警告消息。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '.ssh/my_private_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/my_private_key.pem
Permission denied (publickey).0777.ssh/my_private_key.pem

若是在嘗試登陸到您的實例時看到相似的消息,請檢查此錯誤消息的第一行,驗證您爲實例使用的公鑰是否正確。上面的示例對私有密鑰 .ssh/my_private_key.pem 使用文件權限 0777,該權限容許任何人讀取或寫入該文件。此權限級別很是不安全,所以 SSH 會忽略此密鑰。要修復此錯誤,請執行如下命令,替入您的私鑰文件的路徑。

$ chmod 0400 .ssh/my_private_key.pemchmod 0400 .ssh/my_private_key.pem.ssh/my_private_key.pem

錯誤:服務器拒絕咱們的密鑰 沒有支持的身份驗證方法

若是在使用 PuTTY 鏈接到您的實例時收到如下兩種錯誤之一:Error: Server refused our key 或 Error: No supported authentication methods available,請驗證在鏈接時是否爲 AMI 使用了正確的用戶名稱。在 PuTTY Configuration (PuTTY 配置) 窗口的 User name (用戶名) 框中輸入用戶名。

正確的用戶名以下所示:

  • 對於 Amazon Linux AMI,用戶名稱是 ec2-user

  • 對於 RHEL5 AMI,用戶名稱爲 root 或 ec2-user

  • 對於 Ubuntu AMI,用戶名稱是 ubuntu

  • 對於 Fedora AMI,用戶名稱爲 fedora 或 ec2-user

  • 對於 SUSE Linux,用戶名稱是 root 或 ec2-user

  • 另外,若是 ec2-user 和 root 沒法使用,請與 AMI 供應商覈實。

您還應驗證您的私有密鑰 (.pem) 文件已經正確轉換爲 PuTTY (.ppk) 能夠識別的格式。有關轉換您的私有密鑰的更多信息,請參閱 使用 PuTTY 從 Windows 鏈接到 Linux 實例

在 Safari 瀏覽器上使用 MindTerm 時的錯誤

若是您使用 MindTerm 鏈接到實例而且使用 Safari Web 瀏覽器,則可能會收到如下錯誤:

Error connecting to your_instance_ip, reason: 
 —> Key exchange failed: Host authentication failedyour_instance_ip

您須要更新瀏覽器的安全設置以容許 AWS 管理控制檯在不安全模式下運行 JAVA 插件。

啓用 JAVA 插件以便在不安全模式下運行

  1. 在 Safari 中,保持 Amazon EC2 控制檯打開,依次選擇 Safari、Preferences、Security。

  2. 選擇 Plug-in Settings(在較舊版本的 Safari 上,選擇 Manage Website Settings)。

  3. 選擇左側的 Java 插件,而後在 Currently Open Websites 列表中找到 AWS 管理控制檯 URL。從其關聯列表中選擇 Run in Unsafe Mode (在不安全模式下運行)。

  4. 出現提示時,選擇警告對話框中的 Trust。選擇 Done 返回到瀏覽器。

使用 Mac OS X RDP 客戶端時出錯

若是您使用 Microsoft 網站的遠程桌面鏈接客戶端鏈接到 Windows Server 2012 R2 實例,則可能會收到如下錯誤:

Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.

從 Apple iTunes 存儲下載 Microsoft 遠程桌面應用程序,而後使用該應用程序鏈接到實例。

沒法對實例執行 Ping 操做

ping 命令是一種 ICMP 流量 — 若是您沒法對實例執行 ping 操做,請確保您的入站安全組規則容許的 Echo Request 消息的 ICMP 流量來自全部資源,或來自從中發出命令的計算機或實例。若是您沒法從實例發出 ping 命令,請確保您的出站安全組規則容許的 Echo Request 消息的 ICMP 流量發送到全部目標,或發送到您正在嘗試對其執行 ping 操做的主機。

相關文章
相關標籤/搜索