2009-04-09 38 views
14

Tôi có 2 máy chủ ssh phía sau tường lửa nat tại một vị trí thay đổi IP của nó mỗi ngày. Chúng luôn ở cùng địa chỉ IP trong một thời gian nhất định nhưng trên các cổng khác nhau.Làm cách nào để xử lý xác minh khóa máy chủ ssh với 2 máy chủ khác nhau trên cùng một địa chỉ IP (nhưng thay đổi)?

Tôi đang kết nối đến máy chủ A theo cách này:

ssh -p 22001 [email protected] 

và máy chủ B:

ssh -p 22002 [email protected] 

Vì vậy, tôi nhận được 2 host key khác nhau cho cùng một IP, và cũng có khi thay đổi IP ngay cả một IP khác cho cùng một máy chủ.

Tôi phải tiếp tục xóa qua và qua phím khác hoặc khóa cũ (trong trường hợp thay đổi IP) trong tệp known_hosts.

Tôi đang do dự để tắt xác minh khóa, vì điều này sẽ kém an toàn hơn. Nhưng nhận được một cảnh báo tất cả các thời gian cũng không an toàn (vì tôi bỏ qua cảnh báo như vậy tất cả thời gian sau đó). Có giải pháp nào tốt hơn không?

này liên quan đến câu hỏi cũ của tôi ở đây nhưng không giống nhau:

SSH login warning message on a server with 2 DNS names

+0

tại sao này đóng thay vì di chuyển tới [superuser] (https : //superuser.com/) hoặc [Unix & Linux] (https://unix.stackexchange.com/)? –

Trả lời

32

Tôi nghĩ rằng điều này sẽ làm việc:

Tạo một file config trong thư mục .ssh của bạn như sau:

Host server1 
    Hostname x1.example.com 
    HostKeyAlias server1 
    CheckHostIP no 
    Port 22001 
    User karl 

Host server2 
    Hostname x2.example.com 
    HostKeyAlias server2 
    CheckHostIP no 
    Port 22002 
    User karl 

Giải thích bên dưới (từ man ssh_config)

CheckHostIP

Nếu cờ này được thiết lập để "yes", ssh (1) sẽ bổ sung kiểm tra host địa chỉ IP trong known_hosts tập tin. Điều này cho phép ssh phát hiện xem khóa máy chủ có thay đổi do giả mạo DNS hay không. Nếu tùy chọn được đặt thành "không", kiểm tra sẽ không được thực thi. Mặc định là "có".

HostKeyAlias ​​

Chỉ định một bí danh mà nên được sử dụng thay vì thực tên máy chủ khi nhìn lên hoặc lưu khóa máy chủ trong các máy chủ quan trọng file cơ sở dữ liệu. Tùy chọn này hữu ích cho việc tạo đường hầm SSH kết nối hoặc cho nhiều máy chủ chạy trên một máy chủ duy nhất.

Các UsernamePort dòng tránh bạn cần phải cung cấp cho những tùy chọn trên dòng lệnh, quá, vì vậy bạn chỉ có thể sử dụng:

% ssh server1 
% ssh server2 
+0

Điều này thật tuyệt! Hoạt động tuyệt vời, cảm ơn bạn! – user89021

+1

Chỉ cần tự hỏi: có cách nào để có ssh lưu trữ IP và cổng trong known_hosts?IIUC, điều này sẽ cho phép một số bảo vệ chống lại giả mạo DNS, phải không? – Hbf

+1

@Hbf trên hệ thống MacOS X của tôi, cổng (nếu không chuẩn) _is_ được lưu trữ trong 'known_hosts'. – Alnitak

Các vấn đề liên quan