Sự cố SSH: Đọc từ ổ cắm không thành công: Thiết lập lại kết nối bằng ngang hàng


14

Tôi đã biên dịch OpenSSH_6.6p1 trên một trong các máy chủ của chúng tôi. Tôi có thể đăng nhập qua SSH đến máy chủ được nâng cấp. Nhưng tôi không thể kết nối với các máy chủ khác đang chạy OpenSSH_6.6p1 hoặc OpenSSH_5.8 từ đây. Trong khi kết nối tôi nhận được một lỗi như dưới đây.

Read from socket failed: Connection reset by peer

Trên máy chủ đích trong nhật ký, tôi thấy nó như dưới đây.

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

Tôi đã thử chỉ định cext_spec [ssh -c aes128-ctr Destination-server] như đã đề cập ở đây và có thể kết nối. Làm thế nào có thể cấu hình ssh để sử dụng mật mã theo mặc định? Tại sao mật mã được yêu cầu ở đây?


Từ máy chủ mà bạn gặp lỗi này, điều gì xảy ra khi bạn làm telnet ip.or.name.of.offending.server 22?
MadHatter

1
Cả hai bên dường như nghĩ rằng phía bên kia đã đóng kết nối. Tại thời điểm này, tôi sẽ thoát ra tcpdump hoặc wireshark và chạy nó trên cả hai đầu.
Michael Hampton

@MadHatter Tôi có thể telnet trên cổng 22 và nhận được phản hồi SSH.
nitin

Hãy thử biên dịch các phiên bản trước của openssh như 6.5p1 để xem hành vi này có phải là do sự thay đổi trong cơ sở mã không?

Câu trả lời:


7

Vấn đề có vẻ như một lỗi phía máy chủ. Khi máy khách gửi danh sách mật mã, máy chủ openssh có thể mong đợi có thể đọc danh sách trong một cuộc gọi hệ thống.

Nếu danh sách các mật mã được hỗ trợ dài hơn có thể được truyền trong một gói, máy chủ có thể nhận được ít byte hơn trong cuộc gọi đầu tiên so với dự kiến. Hành vi đúng trên máy chủ sẽ là thực hiện một cuộc gọi khác để nhận phần còn lại của byte. Nhưng từ mô tả sự cố xuất hiện, máy chủ thay vào đó sẽ đóng kết nối khi nó không nhận được danh sách đầy đủ các mật mã cùng một lúc. Khi gói tiếp theo từ máy khách đến, máy chủ sẽ gửi thiết lập lại kết nối cho máy khách.

Cấu hình máy khách để sử dụng danh sách mật mã ngắn hơn sau đó sẽ khắc phục lỗi. Máy khách openssh sẽ tìm danh sách các mật mã ở những nơi sau:

  1. Trên dòng lệnh bằng cách sử dụng -c cext_spec hoặc -o Ciphers = cext_spec
  2. Trong ~ / .ssh / config bằng cách chỉ định Ciphers codes_spec trong phần máy chủ liên quan hoặc trước máy chủ đầu tiên.
  3. Trong / etc / ssh / ssh_config sử dụng cùng định dạng với ~ / .ssh / config
  4. Một danh sách mặc định được tích hợp vào máy khách tại thời điểm biên dịch.

Hai tệp cấu hình tương ứng là cài đặt cho mỗi người dùng và toàn hệ thống. Sử dụng Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbcnhư Eric đề nghị nên hoạt động tốt.


Đây có phải là một lỗ hổng trong phiên bản openssh không? Có ai có một liên kết đến trình theo dõi lỗi openssh cho vấn đề này không?
dùng313114

1
@ user313114 Tôi chưa tìm kiếm bất kỳ trình theo dõi nào như vậy bởi vì tôi tin rằng lỗi đã được sửa trong các phiên bản mới nhất ba năm trước khi câu trả lời này được viết.
kasperd

4

Bạn có thể chỉ định mật mã trong tệp cấu hình ssh (/ etc / ssh / ssh_config hoặc tương tự, tùy thuộc vào $ PREFIX, v.v.). Bất kỳ tùy chọn nào bạn chuyển đến ssh client trên dòng lệnh đều có thể được đặt trong tệp cấu hình ssh (client).

Đây là dòng liên quan (chỉ cần bỏ qua):

#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

3

Cách của tôi để sửa nó, hy vọng nó sẽ giúp được ai đó:

# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client

Chỉnh sửa sshd_config bằng cách thêm một giá trị

add :  MaxAuthTries 3

Chỉnh sửa ssh_config bằng cách bỏ ghi chú giá trị

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

0

Đã giải quyết vấn đề này bằng cách sửa đổi quyền bên dưới tệp thành 600.

/ etc / ssh / ssh_host_dsa_key
/ etc / ssh / ssh_host_rsa_key
/ etc / ssh / ssh_host_ecdsa_key

Đồng thời sửa đổi quyền cho tất cả các tệp khác trong '/ etc / ssh /' thành 644. Tất cả các tệp phải được sở hữu bởi 'root'.

Dưới đây là bộ lệnh hoàn chỉnh để gán quyền thích hợp cho tất cả các tệp trong thư mục '/ etc / ssh':

gốc chown: root / etc / ssh / * chmod 644 / etc / ssh / *
chmod 600 / etc / ssh / ssh_host_dsa_key
chmod 600 / etc / ssh / ssh_host_rsa_key
chmod 600 / etc / ssh / ssh_host_ecdsa_key


-1

Vấn đề của tôi có các triệu chứng chính xác giống như bạn đang thấy là do các khóa máy chủ bị cắt ngắn. Hãy thử tạo lại chúng bằng:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.