Câu trả lời:
-o "UserKnownHostsFile /dev/null"
nên làm việc.
grep
sẽ hợp nhất thiết bị xuất chuẩn và thiết bị xuất chuẩn; tình trạng thoát cũng có thể thay đổi. Nếu sử dụng bash
, sẽ tốt hơn nếu sử dụng thay thế quy trình để loại bỏ thông báo : ssh 2> >( egrep >&2 -v '^Warning: Permanently added') -o "UserKnownHostsFile /dev/null" [...]
. Nó sẽ tránh đường ống và do đó thay đổi tương ứng trong xử lý trạng thái thoát.
Nếu bạn muốn hành vi này vì bạn đang làm việc với các máy chủ đám mây (AWS EC2, Rackspace CloudServers, v.v.) hoặc bạn liên tục cung cấp hình ảnh mới trong Vagrant, bạn có thể muốn cập nhật cấu hình SSH thay vì thêm bí danh bash hoặc thêm tùy chọn trên dòng lệnh.
Xem xét thêm một cái gì đó như:
Host *.mydomain.com
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User foo
LogLevel QUIET
Tôi cảm thấy muốn thêm khóa máy chủ vào know_hosts của mình (những người chạy các dịch vụ này, theo kinh nghiệm của tôi, ít nhất là đủ thông minh để giữ các khóa máy chủ của họ nhất quán giữa các máy phục vụ cùng tên máy chủ) và sau đó bật StricthostKeyChecking, tắt CheckhostIP và tắt đăng nhập bằng LogLevel ERROR sẽ cho bạn trải nghiệm tốt nhất mà không mất bảo mật. (Ok, không có CheckhostIP, bạn cần phải tin tưởng DNS, đây là một lỗ hổng lớn mà không có DNSSEC rộng rãi hoặc một cái gì đó tương tự; nhưng chúng ta sẽ chỉ quét nó dưới tấm thảm ngay bây giờ.)
Tôi sử dụng tệp know_hosts chỉ đọc, vì vậy tôi phải làm gì đó hoặc tôi nhận được cảnh báo vô tận về việc không thể thêm các mục vào know_hosts.
Những gì tôi sử dụng:
Host github.com *.github.com
StrictHostKeyChecking yes
CheckHostIP no
LogLevel ERROR
Tôi muốn các dịch vụ này xuất bản khóa máy chủ SSH của họ trên trang web của họ thông qua HTTPS, vì vậy tôi có thể sao chép chúng một cách rõ ràng mà không phải kết nối trước và có khả năng phơi bày bản thân trước một cuộc tấn công MITM.
Tôi đề nghị
LogLevel ERROR
kết thúc
LogLevel QUIET
do đó bạn vẫn nhận được "Không thể giải quyết tên máy chủ" và các lỗi khác như vậy
Bạn đã thử vô hiệu hóa StrictHostKeyChecking
? Bạn có thể làm điều đó với -o
tùy chọn hoặc trong tệp cấu hình ~/.ssh/config
.
Tôi thấy các mục .ssh / config sau đây hữu ích (LAN với DHCP và DNS):
CheckHostIP no
Host *.*
CheckHostIP yes
Kết quả là tên máy cục bộ "zora" hoặc "goron" sẽ không kiểm tra đối với các địa chỉ IP được gán động, nhưng www.mycompany.com hoặc node42.planetlab.com vẫn sẽ xác nhận IP tĩnh của chúng.
grep -v "^Warning: Permanently added"