Câu trả lời:
Có một số điều có thể đi sai. Thêm vào -vvv
để làm cho ssh in một dấu vết chi tiết về những gì nó đang làm và xem nó đang tạm dừng ở đâu.
Vấn đề có thể là trên máy khách hoặc trên máy chủ.
Một vấn đề phổ biến trên máy chủ là nếu bạn kết nối từ máy khách đã hết thời gian tra cứu DNS. (Tra cứu DNS đảo ngược, có nghĩa là lấy lại từ địa chỉ IP của máy khách về tên máy chủ. Nó không thực sự hữu ích cho bảo mật, chỉ hữu ích một chút để chẩn đoán các lần thử breakin từ các mục nhật ký, nhưng dù sao cấu hình vẫn làm điều đó.) Để tắt tra cứu DNS ngược, hãy thêm UseDNS no
vào /etc/ssh/sshd_config
(bạn cần phải root trên máy chủ; nhớ khởi động lại dịch vụ SSH sau đó).
Một điều có thể sai là thời gian xác thực GSSAPI . Nếu bạn không biết đó là gì, có lẽ bạn không dựa vào nó; bạn có thể tắt nó bằng cách thêm dòng GSSAPIAuthentication no
vào /etc/ssh/ssh_config
hoặc ~/.ssh/config
(đó là ở phía máy khách).
UseDNS no
sửa nó như một lá bùa. Tôi đang ở trong một mạng nội bộ không có máy chủ DNS để xử lý tra cứu ngược lại cho các IP nội bộ.
GSSAPIAuthentication
? (googling trong 15 phút không làm sáng tỏ điều đó)
Hãy để thời gian quá trình đăng nhập và xem sẽ mất bao lâu:
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m45.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Xem ở trên mất khoảng 45 giây để đăng nhập -------- RẤT RẤT
Khi bạn đăng nhập dưới dạng tập tin sshd_config chỉnh sửa gốc và thay đổi mục nhập UseDNS như bên dưới. Ở đây tôi đang sử dụng sed thay vì chỉnh sửa tập tin.
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
#UseDNS yes
[root@ISSLABNTL01 ~]# sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
UseDNS no
[root@ISSLABNTL01 ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@ISSLABNTL01 ~]# exit
Hãy để chúng tôi thời gian quá trình đăng nhập và xem bây giờ sẽ mất bao lâu.
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m6.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Xem nó mất 6 giây, thời gian để tôi nhập mật khẩu.
UseDNS no
Đã giải quyết nó
Đó là một cái gì đó sai từ cài đặt của Ubuntu.
Để khắc phục, bạn phải thay đổi dòng này trong /etc/nsswitch.conf :
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Và thay đổi nó cho cái này:
hosts: files dns
nsswitch.conf
như thế này là yêu cầu sự cố và không cung cấp giải pháp chung để làm chậm SSH.
Trong trường hợp của tôi, vấn đề có thể được giải quyết bằng cách khởi động lại systemd-logind
:
systemctl restart systemd-logind
Điều này được đề cập trên Serverfault .
Tôi phải làm điều này thường xuyên và tôi không biết nguyên nhân cốt lõi của vấn đề là gì.
Đầu ra gỡ lỗi cho ssh trong trường hợp của tôi chỉ dừng lại trong 30 giây trong khi nó đang 'kết nối'. Giải pháp hóa ra có liên quan đến cài đặt DNS trên hệ thống cục bộ của tôi. Một cấu hình mạng trước đó đã để lại một máy chủ DNS không có thật trong /etc/resolv.conf
tệp. Thay thế nó bằng một máy chủ DNS hiện tại đã khắc phục vấn đề.
Đối với tôi đã thay đổi hệ thống dns thành 127.0.0.1, trước đó đây là một máy chủ không tồn tại.
nano /etc/resolv.conf
Và viết như sau
domain localdomain
search localdomain
(Removed this line) ===> nameserver 10.0.0.1
(Added this line) ===> nameserver 127.0.0.1
Tôi không biết nhiều về môi trường của người gửi thư như tôi muốn, nhưng đối với những người khác có vấn đề tương tự, đó có thể là một vấn đề sssd
mà chúng tôi sử dụng để gắn mojo ldap.
Điều này xảy ra với tôi:
$ time ssh server.example.com
real 2m0.018s
user 0m0.006s
sys 0m0.004s
Tôi phải có quyền truy cập vào máy chủ (trong trường hợp của tôi thông qua bảng điều khiển) sau đó thực hiện:
service restart sssd
Sau đó, mọi thứ chỉ hoạt động. Tôi đã không có thời gian để gỡ lỗi nguyên nhân gốc rễ, nhưng chiếc băng đô này hoạt động với tôi.
Tôi có thể giải quyết lời nhắc mật khẩu chậm thông qua ssh - vấn đề bằng cách kiểm tra Bật DNS Relay trong cài đặt DHCP trên bộ định tuyến dlink của tôi. Sau đó, các kết nối với SSH hoạt động trong vòng một giây.
Network Settings -> Router Settings -> Enable DNS Relay [x]
Cấu hình mặc định chuyển tiếp mọi yêu cầu DNS cho nhà cung cấp. Nó rất chậm mặc dù tôi đã kết nối với ssh pi@10.0.0.103. Một gợi ý cho giải pháp là một mục trong /etc/resolv.conf "search upc.at" được cung cấp qua dhcp.
Hướng dẫn sử dụng dlink nêu:
When DNS Relay is enabled, DHCP clients of the router will be assigned
the router's LAN IP address as their DNS server. All DNS requests that
the router receives will be forwarded to your ISPs DNS servers.
When DNS relay is disabled, all DHCP clients of the router will
be assigned the ISP's DNS server.
Sau khi phát hành dhcp trên máy khách và máy chủ, kết nối qua SSH đã nhanh chóng trở lại. HTH.