Câu hỏi Làm thế nào tôi có thể ngăn chặn / etc / vấn đề mà không làm mất các thông báo lỗi?


Có thể nói cho khách hàng ssh không in các kết nối của /etc/issue để stdout khi kết nối với một máy chủ từ xa, nhưng để in ra bất kỳ chẩn đoán khác (ví dụ: lỗi) tin nhắn?

Sử dụng ssh -q hoặc có LogLevel quiet trong ~/.ssh/config ngăn chặn /etc/issue in, nhưng cũng tắt thông báo lỗi. Tôi đã thử touching ~/.hushlogin - dừng lại /etc/motd được in, nhưng không ảnh hưởng /etc/issue.

Giải pháp rõ ràng nhất chỉ là xóa /etc/issue, nhưng chính sách của công ty ra lệnh cho tệp ở đó với cảnh báo nghiêm trọng về truy cập trái phép. Điều này là không thể thương lượng. Thật không may, tôi đã có một loạt các kịch bản chạy trên khá một vài máy chủ thông qua ssh, và các tập tin đăng nhập là một) rất lớn và b) đầy đủ của legalese. Vì khá nhiều thứ chạy không cần giám sát, tôi không muốn mất bất kỳ thông báo lỗi nào được in.


4
2017-12-17 14:52


gốc


Đặt các legals phải là tĩnh. Tôi đề nghị một loại bỏ tự động từ đăng nhập bằng cách sử dụng awk hoặc sed. Tôi sẽ đi kèm với một giải pháp vào ngày mai. - Archemar


Các câu trả lời:


Vâng Thêm tệp ~/.ssh/config chứa:

LogLevel ERROR

OpenSSH hiển thị nội dung của /etc/issue từ máy chủ từ xa. Tham số đó sẽ vô hiệu hóa màn hình này. Rất hữu ích khi công ty từ xa Git repo như một cảnh báo bảo mật gây phiền nhiễu.

Các ssh config manpage nói:

LogLevel

Cấp độ độ dài được sử dụng khi ghi nhật ký tin nhắn   từ ssh (1). Các giá trị có thể là: QUIET, FATAL, ERROR,    INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2DEBUG3.   Mặc định là INFO. DEBUG và DEBUG1 tương đương.    DEBUG2 và DEBUG3 mỗi loại xác định mức độ cao hơn của đầu ra tiết.


Lừa thêm Thêm cũng trong ~/.ssh/config

Host *
     StrictHostKeyChecking no

Điều này ngăn cản một thông báo gây phiền nhiễu khác. Khi kết nối với máy chủ lưu trữ mới, câu hỏi bảo mật sau sẽ chặn kết nối đang diễn ra. Bí quyết trên luôn luôn giả định yes. Tuy nhiên trong thực tế bạn luôn trả lời yesphải không?

The authenticity of host 'newhostname (11.222.33.44)' can't be established.
RSA key fingerprint is aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88:99:00.
Are you sure you want to continue connecting (yes/no)?

6
2017-12-08 16:39





Cả OS X localhost hoặc máy chủ Ubuntu của tôi không in được /etc/issue khi tôi ssh trong (không phải với một trình bao hoặc cũng không thực hiện một lệnh từ xa), vì vậy tôi không thể tái tạo vấn đề của bạn. Tôi sẽ thử điều này từ bộ nhớ.

Nếu bạn không nhớ tạo hai kết nối, bạn có thể thực hiện điều này:

num_lines="$(ssh yourhost 'cat /etc/issue' | wc -l)";
ssh yourhost 'your real command here' | tail +$(($num_lines / 2 + 1));

Lệnh ssh đầu tiên sẽ gây ra /etc/issue được in hai lần (một lần bởi hệ thống, một lần cat), do đó, số lượng các dòng sẽ gấp đôi /etc/issue. Đầu ra của lệnh thứ hai sẽ chỉ hiển thị đầu ra từ số dòng đó cộng một.


3
2018-02-21 15:03





Nếu nhật ký của bạn sẽ có một loạt phiên được nối vào một tệp, bạn có thể có tập lệnh của mình làm một việc như echo START LOGGING trước khi chạy bất kỳ lệnh nào khác, và sau đó echo END LOGGING trước khi ngắt kết nối, và sau đó sử dụng một kịch bản lệnh shell đơn giản (sử dụng sed hoặc awk) loại bỏ tất cả nội dung của tệp giữa END và START (ví dụ: bản mẫu trước mỗi lần đăng nhập).

CHỈNH SỬA:

Bây giờ tôi thấy rằng bạn không đăng nhập, nhưng thay vì tìm kiếm thư trong cửa sổ - tôi khuyên bạn nên tạo nhật ký và quét nhật ký thay vì chỉ dựa vào đầu ra cửa sổ đầu cuối - điều này linh hoạt hơn nhiều và cho phép tham chiếu lại lỗi từ các phiên trước Nếu cần thiết.


3
2018-02-21 15:12





Không.

Khi máy chủ gửi lại dòng văn bản, làm cách nào để máy khách SSH biết được dòng nào đến từ máy chủ / etc / issue và thư nào là các thông điệp thú vị hơn? Nó không thể.


0
2018-02-19 15:21



nó có thể biết vì / etc / issue được in trước khi bạn chạy bất kỳ lệnh nào, nó sẽ không hiển thị ở giữa phiên, - Justin Smith


Bạn có thể thiết lập điều này từ dòng lệnh với:

ssh -o loglevel=ERROR

Nếu bạn đang sử dụng rsync (như trường hợp của tôi khi Googling vấn đề này), bạn có thể làm điều đó bằng cách chỉ định dòng lệnh kết nối ssh để rsync là:

rsync -e 'ssh -o loglevel=ERROR'


0
2018-03-07 02:21