【轉】ssh登錄很慢解決方法

来源:http://www.cnblogs.com/zhenghongxin/archive/2016/01/29/5169329.html
-Advertisement-
Play Games

使用ssh客戶端(如:putty)連接Linux伺服器,可能會等待10-30秒才有提示輸入密碼。嚴重影響工作效率。登錄很慢,登錄上去後速度正常,這種情況主要有兩種可能的原因: 1. DNS反向解析問題 OpenSSH在用戶登錄的時候會驗證IP,它根據用戶的IP使用反向DNS找到主機名,再使用DNS找


使用ssh客戶端(如:putty)連接Linux伺服器,可能會等待10-30秒才有提示輸入密碼。嚴重影響工作效率。登錄很慢,登錄上去後速度正常,這種情況主要有兩種可能的原因:

1. DNS反向解析問題

OpenSSH在用戶登錄的時候會驗證IP,它根據用戶的IP使用反向DNS找到主機名,再使用DNS找到IP地址,最後匹配一下登錄的IP是否合法。如果客戶機的IP沒有功能變數名稱,或者DNS伺服器很慢或不通,那麼登錄就會很花時間。

解決辦法:在目標伺服器上修改sshd伺服器端配置,並重啟sshd

  1. vi /etc/ssh/sshd_config
  2. UseDNS no

2. 關閉ssh的gssapi認證

用ssh -v user@server 可以看到登錄時有如下信息:

  1. debug1: Next authentication method: gssapi-with-mic
  2. debug1: Unspecified GSS failure. Minor code may provide more information

註:ssh -vvv user@server 可以看到更細的debug信息

解決辦法:

修改sshd伺服器端配置

  1. vi /etc/ssh/ssh_config
  2. GSSAPIAuthentication no

可以使用ssh -o GSSAPIAuthentication=no user@server登錄

GSSAPI ( Generic Security Services Application Programming Interface) 是一套類似Kerberos 5的通用網路安全系統介面。該介面是對各種不同的客戶端伺服器安全機制的封裝,以消除安全介面的不同,降低編程難度。但該介面在目標機器無功能變數名稱解析時會有 問題

使用strace查看後發現,ssh在驗證完key之後,進行authentication gssapi-with-mic,此時先去連接DNS伺服器,在這之後會進行其他操作

  1. [root@192-168-3-40 ~]# ssh -vvv [email protected]  
  2. OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013  
  3. debug1: Reading configuration data /etc/ssh/ssh_config  
  4. debug1: Applying options for *  
  5. debug2: ssh_connect: needpriv 0  
  6. debug1: Connecting to 192.168.3.44 [192.168.3.44] port 22.  
  7. debug1: Connection established.  
  8. debug1: permanently_set_uid: 0/0  
  9. debug1: identity file /root/.ssh/identity type -1  
  10. debug1: identity file /root/.ssh/identity-cert type -1  
  11. debug1: identity file /root/.ssh/id_rsa type -1  
  12. debug1: identity file /root/.ssh/id_rsa-cert type -1  
  13. debug1: identity file /root/.ssh/id_dsa type -1  
  14. debug1: identity file /root/.ssh/id_dsa-cert type -1  
  15. debug1: identity file /root/.ssh/id_ecdsa type -1  
  16. debug1: identity file /root/.ssh/id_ecdsa-cert type -1  
  17. debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3  
  18. debug1: match: OpenSSH_5.3 pat OpenSSH*  
  19. debug1: Enabling compatibility mode for protocol 2.0  
  20. debug1: Local version string SSH-2.0-OpenSSH_5.3  
  21. debug2: fd 3 setting O_NONBLOCK  
  22. debug1: SSH2_MSG_KEXINIT sent  
  23. debug3: Wrote 960 bytes for a total of 981  
  24. debug1: SSH2_MSG_KEXINIT received  
  25. debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1  
  26. debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss  
  27. debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]  
  28. debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]  
  29. debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96  
  30. debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96  
  31. debug2: kex_parse_kexinit: none,[email protected],zlib  
  32. debug2: kex_parse_kexinit: none,[email protected],zlib  
  33. debug2: kex_parse_kexinit:  
  34. debug2: kex_parse_kexinit:  
  35. debug2: kex_parse_kexinit: first_kex_follows 0  
  36. debug2: kex_parse_kexinit: reserved 0  
  37. debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1  
  38. debug2: kex_parse_kexinit: ssh-rsa,ssh-dss  
  39. debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]  
  40. debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]  
  41. debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96  
  42. debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96  
  43. debug2: kex_parse_kexinit: none,[email protected]  
  44. debug2: kex_parse_kexinit: none,[email protected]  
  45. debug2: kex_parse_kexinit:  
  46. debug2: kex_parse_kexinit:  
  47. debug2: kex_parse_kexinit: first_kex_follows 0  
  48. debug2: kex_parse_kexinit: reserved 0  
  49. debug2: mac_setup: found hmac-md5  
  50. debug1: kex: server->client aes128-ctr hmac-md5 none  
  51. debug2: mac_setup: found hmac-md5  
  52. debug1: kex: client->server aes128-ctr hmac-md5 none  
  53. debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent  
  54. debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP  
  55. debug3: Wrote 24 bytes for a total of 1005  
  56. debug2: dh_gen_key: priv key bits set: 120/256  
  57. debug2: bits set: 506/1024  
  58. debug1: SSH2_MSG_KEX_DH_GEX_INIT sent  
  59. debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY  
  60. debug3: Wrote 144 bytes for a total of 1149  
  61. debug3: check_host_in_hostfile: host 192.168.3.44 filename /root/.ssh/known_hosts  
  62. debug3: check_host_in_hostfile: host 192.168.3.44 filename /root/.ssh/known_hosts  
  63. debug3: check_host_in_hostfile: match line 8  
  64. debug1: Host '192.168.3.44' is known and matches the RSA host key.  
  65. debug1: Found key in /root/.ssh/known_hosts:8  
  66. debug2: bits set: 527/1024  
  67. debug1: ssh_rsa_verify: signature correct  
  68. debug2: kex_derive_keys  
  69. debug2: set_newkeys: mode 1  
  70. debug1: SSH2_MSG_NEWKEYS sent  
  71. debug1: expecting SSH2_MSG_NEWKEYS  
  72. debug3: Wrote 16 bytes for a total of 1165  
  73. debug2: set_newkeys: mode 0  
  74. debug1: SSH2_MSG_NEWKEYS received  
  75. debug1: SSH2_MSG_SERVICE_REQUEST sent  
  76. debug3: Wrote 48 bytes for a total of 1213  
  77. debug2: service_accept: ssh-userauth  
  78. debug1: SSH2_MSG_SERVICE_ACCEPT received  
  79. debug2: key: /root/.ssh/identity ((nil))  
  80. debug2: key: /root/.ssh/id_rsa ((nil))  
  81. debug2: key: /root/.ssh/id_dsa ((nil))  
  82. debug2: key: /root/.ssh/id_ecdsa ((nil))  
  83. debug3: Wrote 64 bytes for a total of 1277  
  84. debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password  
  85. debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password  
  86. debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password  
  87. debug3: authmethod_lookup gssapi-keyex  
  88. debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive,password  
  89. debug3: authmethod_is_enabled gssapi-keyex  
  90. debug1: Next authentication method: gssapi-keyex  
  91. debug1: No valid Key exchange context  
  92. debug2: we did not send a packet, disable method  
  93. debug3: authmethod_lookup gssapi-with-mic  
  94. debug3: remaining preferred: publickey,keyboard-interactive,password  
  95. debug3: authmethod_is_enabled gssapi-with-mic  
  96. debug1: Next authentication method: gssapi-with-mic  
  97. debug3: Trying to reverse map address 192.168.3.44.  
  98. debug1: Unspecified GSS failure.  Minor code may provide more information  
  99. Cannot determine realm for numeric host address  
  100.   
  101. debug1: Unspecified GSS failure.  Minor code may provide more information  
  102. Cannot determine realm for numeric host address  
  103.   
  104. debug1: Unspecified GSS failure.  Minor code may provide more information  
  105.   
  106.   
  107. debug1: Unspecified GSS failure.  Minor code may provide more information  
  108. Cannot determine realm for numeric host address  
  109.   
  110. debug2: we did not send a packet, disable method  
  111. debug3: authmethod_lookup publickey  
  112. debug3: remaining preferred: keyboard-interactive,password  
  113. debug3: authmethod_is_enabled publickey  
  114. debug1: Next authentication method: publickey  
  115. debug1: Trying private key: /root/.ssh/identity  
  116. debug3: no such identity: /root/.ssh/identity  
  117. debug1: Trying private key: /root/.ssh/id_rsa  
  118. debug3: no such identity: /root/.ssh/id_rsa  
  119. debug1: Trying private key: /root/.ssh/id_dsa  
  120. debug3: no such identity: /root/.ssh/id_dsa  
  121. debug1: Trying private key: /root/.ssh/id_ecdsa  
  122. debug3: no such identity: /root/.ssh/id_ecdsa  
  123. debug2: we did not send a packet, disable method  
  124. debug3: authmethod_lookup password  
  125. debug3: remaining preferred: ,password  
  126. debug3: authmethod_is_enabled password  
  127. debug1: Next authentication method: password  
  128. [email protected]'s password:

本文轉載於:https://blog.linuxeye.com/420.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Output子句日常灰常有用,而且用的地方也挺多,但是確好多時候被我們忽視,今天我就也簡單掃盲一下這個語句的用法。 Output子句 返回受 INSERT、UPDATE、DELETE 或 MERGE 語句影響的各行中的信息,或返回基於受這些語句影響的各行的表達式。 這些結果可以返回到處理應用程式,以
  • 一直沒有在意過資料庫處理樹形數據的重要性,直到有一天朋友問起我關於樹形數據查詢的問題時才發現根本不會,正好這個時候也要用到遞歸進行樹形數據的查詢於是在網上查了一圈,語法總結如下 參考文獻:https://msdn.microsoft.com/query/dev10.query?appId=Dev10
  • declare @temp_temp uniqueidentifier--臨時變數 DECLARE aaa CURSOR for select Id from A -------------------打開游標 open aaa --先查詢一次再迴圈,防止有多個游標時@@FETCH_STATUS=-
  • 目錄 1 建立資料庫檔案 2 在sqlite3提示列下操作 3 SQL的指令格式 4 建立資料表 5 建立索引 6 加入一筆資料 7 查詢資料 8 如何更改或刪除資料 9 其他sqlite的特別用法 10 小結 建立資料庫檔案 用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入(以下$符
  • 一.概述 同上一篇tcp一樣,udp也是封裝在ip報文裡面。創建UDP的原始套接字如下: 1 (sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_UDP); 同樣,如果要構造udp的ip首部,要開啟IP_HDRINCL選項! udp首部格式: udp的不可靠性,比
  • 一.概述 tcp報文封裝在ip報文中,創建tcp的原始套接字如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP); 此時只能構造tcp報文,如果想進一步構造ip首部,那麼就要開啟sockfd的IP_HDRINCL選項: 1 int on = 1;
  • 配置文件位置:[root@hank-yoon data]# vi /etc/ssh/sshd_configPermitRootLogin yes 在物理機中,裝完系統,預設情況下PermitRootLogin yes是不被註釋掉的! 在虛擬機中PermitRootLogin yes參數預設是被註釋掉
  • 1. 在定義命令的時候,往往需要修改commands.cfg配置文件,如果使用NPRE插件監控遠程伺服器,其實,定義命令也沒這麼複雜 commands.cfg中有關check_nrpe的命令定義如下: define command{ command_name check_nrpe command_l
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...