thay đổi tập tin sshd_config mà không cần khởi động lại máy chủ


33

Tôi đã thay đổi cấu hình trong tập tin

/etc/ssh/sshd_config

nhưng chỉ có hiệu lực sau khi khởi động lại máy chủ. Làm thế nào để thay đổi mà không cần khởi động lại máy chủ?


Bạn có thể sử dụng sudo service ssh restartđể khởi động lại dịch vụ để có hiệu lực. Nhưng hãy nhớ nếu bạn được kết nối thông qua SSH, phiên của bạn sẽ bị chấm dứt.
AzkerM

Câu trả lời:


39

Chỉ cần khởi động lại dịch vụ sshd:

sudo service sshd restart

hoặc là:

sudo /etc/init.d/sshd restart

6
Nếu tôi đang kết nối ssh thì sao?
Anwar

7
không có gì ... nảy sshd đủ thông minh để cho phép các kết nối ssh hiện tại tiếp tục vui vẻ
Scott Stensland

4
Tôi không khuyên bạn nên chạy bất cứ thứ gì trong /etc/init.d trực tiếp. Sử dụng lệnh "dịch vụ". Các dịch vụ của chúng tôi sẽ không quan tâm, nhưng có một số ít làm như vậy vì chúng bị ảnh hưởng bởi các biến môi trường. "Dịch vụ" đảm bảo môi trường được làm sạch. Ví dụ: chạy "sudo" để lại biến môi trường HOME cho thư mục gốc không phải là root của bạn.
Chris Cogdon

5
sudo service ssh restart

sẽ không làm nó. Bạn cần khởi động lại sshd, không phải ssh:

sudo service sshd restart

3
Phụ thuộc vào cấu hình hệ thống. Trong Lubfox 14.04 sudo service ssh restarthoạt động rất tốt, trong khi sudo service sshd restartbáo cáo "sshd: dịch vụ không được nhận dạng". Không chắc chắn tại sao điều này thay đổi mặc dù ...
schulwitz

3

Có một cách thậm chí ít xâm phạm hơn để làm điều này, mà không cần khởi động lại dịch vụ SSH.

Từ man sshd:

sshd đọc lại tệp cấu hình của nó khi nhận được tín hiệu gác máy, SIGHUP, bằng cách tự thực hiện với tên và các tùy chọn mà nó đã được bắt đầu bằng, ví dụ / usr / sbin / sshd.

Vì vậy, bạn có thể sử dụng một lệnh như sau để gửi SIGHUP đến quy trình máy chủ SSH:

sudo kill -SIGHUP $(pgrep -f "sshd -D")

Phần pgrep -f "sshd -D"này sẽ chỉ trả về PID của quy trình sshd daemon lắng nghe các kết nối mới, vì có khả năng sẽ có các PID khác cho mỗi phiên hoạt động không cần tín hiệu.


2
Đây là cách an toàn nhất ( stribika.github.io/2015/01/04/secure-secure-shell.html ) để tải lại cấu hình: "Hãy cực kỳ cẩn thận khi định cấu hình SSH trên máy chủ từ xa. Luôn luôn giữ một phiên hoạt động, không bao giờ khởi động lại sshd. Thay vào đó, bạn có thể gửi tín hiệu SIGHUP để tải lại cấu hình mà không làm chết phiên của mình. Bạn thậm chí có thể cẩn thận hơn bằng cách bắt đầu một phiên bản sshd mới trên một cổng khác và kiểm tra điều đó. "
Adriano Lucas

Có sự khác biệt có ý nghĩa với sudo pkill -HUP sshd?
AdamKalisz

@Adam Bạn chỉ muốn HUP quá trình nghe chứ không phải các máy khách đang hoạt động cũng là sshdcác tiến trình. sudo pkill -HUP -f "sshd -D"là một lựa chọn hấp dẫn, nhưng sau đó pkill báo hiệu cho sudocha mẹ của chính nó vì dòng lệnh đầy đủ của nó khớp với mẫu tìm kiếm của chính nó. Bạn có thể đưa ra một mô hình không phù hợp với bản thân ... -f "sshd -[D], nhưng điều đó làm xáo trộn mọi thứ một chút. Tôi nghĩ rằng phương pháp pgrep dễ dàng hơn cho người học quấn đầu xung quanh.
Steven K

2

Khi kiểm tra root

service --status-all | grep ssh

Tôi không có sshddịch vụ, nhưng có sshdịch vụ trên máy chủ Ubuntu. Sau đó

service ssh restart

2

Đối với hệ thống Systemd - Ubuntu mặc định

sudo systemctl reload sshd.service

hoặc là

 sudo systemctl reload sshd

hoặc là

 sudo /bin/systemctl reload sshd.service

Đối với hệ thống Sysvinit

sudo service sshd reload

hoặc là

sudo /etc/init.d/sshd reload

0

Tải lại có thể là một sự thay thế tốt hơn để khởi động lại

sudo service sshd reload

dưới mui xe, nó gửi HUPtín hiệu đến sshd daemon xử lý gần giống như cách mà Steven K đã trả lời . Sự khác biệt là biến thể này sử dụng killprocchức năng thay vì killlệnh trực tiếp để gửi tín hiệu theo cách chính xác hơn (để giảm các lỗi có thể gửi tín hiệu đến các quy trình sai). Cấu hình được đọc lại mà không cần khởi động lại / dừng dịch vụ.

Tất nhiên là đáng để tìm hiểu chính xác SSH deamon được gọi thực sự như những người khác đã thảo luận.

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.