Sao chép khóa ssh từ máy chủ này sang máy chủ khác


12

Tôi có một máy chủ (giả sử ip của nó là abcd) cho phép người dùng đăng nhập qua ssh. Bây giờ tôi muốn thay đổi máy vật lý giữ ip giống nhau. Vì vậy, máy mới vẫn được truy cập bởi người dùng như thế này

$ ssh abcd

Vấn đề là, mỗi khi một người dùng cố gắng đăng nhập, cô ấy sẽ gặp phải lỗi không khớp ssh-key sau đây.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@ CẢNH BÁO: XÁC NHẬN NHẬN DẠNG HOST ĐÃ THAY ĐỔI! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
ĐÓ LÀ KHẢ NĂNG R THNG MỌI NGƯỜI ĐANG LÀM NỮA!
Ai đó có thể đang nghe lén bạn ngay bây giờ (cuộc tấn công giữa chừng)!
Cũng có thể khóa máy chủ RSA vừa được thay đổi.
Dấu vân tay cho khóa RSA được gửi bởi máy chủ từ xa là
02: dc: c6: 18: 1b: 34: b7: 1d: fa: 90: ab: e1: 95: 48: 69: 84.
Xin vui lòng liên hệ với quản trị hệ thống của bạn.
Thêm khóa máy chủ chính xác trong /home/user/.ssh/ Unknown_hosts để thoát khỏi thông báo này.
Khóa vi phạm trong /home/user/.ssh/ Unknown_hosts:37
Khóa máy chủ RSA cho cựu sinh viên đã thay đổi và bạn đã yêu cầu kiểm tra nghiêm ngặt.
Xác minh khóa máy chủ không thành công.

Tôi biết rằng người dùng có thể xóa dòng # 37 khỏi tệp ~ / .ssh / know_hosts và lần sau cô ấy sẽ nhận được lời nhắc có / không. Những gì tôi muốn là người dùng nên được biết về toàn bộ điều thay thế máy này và chỉ cần nhận được một lời nhắc cho mật khẩu.

Làm thế nào để làm điều đó?


3
Bạn có biết rằng điều này sẽ đánh bại sshsự bảo vệ duy nhất chống lại con người trong các cuộc tấn công ở giữa và có thể dẫn đến việc bạn gửi mật khẩu của mình ngay cho kẻ tấn công thay vì máy dự định không? Trừ khi bạn biết rằng bạn không thể bị tấn công bởi các cuộc tấn công đang hoạt động (ví dụ: bạn đang ở trên cùng một mạng nội bộ an toàn như máy mục tiêu) ssh, mô hình bảo mật này sẽ phá hủy mô hình bảo mật này.
David Schwartz

Đúng. Cả hai máy đều trong cùng một mạng nội bộ. Ngay cả người dùng trong cùng một mạng nội bộ. Với tình huống này, lựa chọn của tôi là gì?
Souvik Pal

Như thế là không đủ. Họ phải ở trong cùng một mạng nội bộ an toàn . Nghĩa là, họ phải hoàn toàn tin tưởng 100% rằng không có thiết bị nào được kết nối với mạng nội bộ không an toàn 100% và họ phải tin tưởng 100% cho tất cả những ai có quyền kiểm soát các thiết bị đó hoặc có thể gắn thiết bị vào mạng đó. Nói cách khác, trong hầu hết mọi kịch bản thực tế, đây là một ý tưởng tồi.
David Schwartz

2
Đó là một điều hoàn toàn hợp lý để làm. Tôi đang sao chép các khóa máy chủ ssh sang một máy chủ khác cho HA để khi tôi đăng nhập, tôi gặp phải những lỗi đó. Ngoài ra tôi nhận được email về failover.
Matt H

3
Tôi đồng ý với Matt. Nếu bạn đang kiểm soát cả hai máy và do đó là chủ sở hữu của các phím, việc di chuyển khóa máy chủ từ máy này sang máy khác trong tầm kiểm soát của bạn KHÔNG phải là người đàn ông trong cuộc tấn công hoặc rủi ro trung bình. Nếu người dùng kết nối tin tưởng khóa máy chủ của bạn, điều đó không thành vấn đề.
Ross

Câu trả lời:


14

Như Ethabell đã đề cập, bạn có thể sao chép các khóa máy chủ hiện tại sang máy chủ mới.

Bạn có thể tìm thấy khóa máy chủ của mình bằng cách mở sshd_configtệp của mình (Trên hộp Ubuntu 12.04 của tôi /etc/ssh/sshd_config). Trong tập tin cấu hình tìm kiếm các HostKeymục. Các mục này sẽ cho bạn biết vị trí của các tệp khóa máy chủ. Bạn sẽ có thể sao chép các tệp này sang máy chủ mới và cập nhật máy chủ mới sshd_configđể trỏ đến các khóa đã sao chép (hoặc chỉ ghi đè lên các tệp đã tồn tại trên máy chủ mới).

Ngoài ra, lưu ý phần này từ sshd_configtrang man, cụ thể là phần về quyền:

Chỉ định tệp chứa khóa máy chủ riêng được sử dụng bởi SSH. Mặc định là /etc/ssh/ssh_host_keycho giao thức phiên bản 1, và /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key/etc/ssh/ssh_host_rsa_keycho phiên bản giao thức 2. Lưu ý rằng sshd (8) sẽ từ chối sử dụng một tập tin nếu nó là nhóm / thế giới có thể truy cập. Có thể có nhiều tập tin khóa máy chủ. Các khóa của rsa1 'được sử dụng cho phiên bản 1 và khóa dsa,, ec ecdsa, hoặc khăn rsa, được sử dụng cho phiên bản 2 của giao thức SSH.


1

Nếu bạn có khóa máy chủ ban đầu, bạn có thể khôi phục nó và điều này sẽ ngăn lỗi.

Hoặc, bạn có thể tắt StricthostKeyChecking trong tệp cấu hình sshd của mình.

... Tuy nhiên, làm điều này là một ý tưởng tồi tệ, tồi tệ. Nếu có một cách để bạn chạy ssh-keygen -R server.example.comtrên máy khách, đó sẽ là cách tốt nhất - bởi vì tắt kiểm tra khóa máy chủ cũng giống như nói, "Này. Tấn công tôi." Tôi muốn che khuất khi mọi thứ thay đổi, nhưng bảo mật nên được ưu tiên số 1 so với những thay đổi che khuất.


Bạn có thể giải thích cách khôi phục khóa máy chủ trên máy mới hơn không?
Souvik Pal

1

Bạn có thể thử nó như thế này

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

Lưu ý rằng nếu thư mục .ssh chưa tồn tại, lệnh trên sẽ thất bại. Ngoài ra, có thể tốt hơn khi tạo tệp để đặt quyền tối thiểu có thể (về cơ bản chỉ đọc-ghi cho chủ sở hữu). Đây là một lệnh nâng cao hơn:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

Để hiểu rõ hơn về vấn đề này, bạn phải truy cập trang web này: Lỗi thay đổi khóa máy chủ SSH

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.