Hướng dẫn chạy các lệnh cơ bản fedora

Lệnh ssh trong Linux được sử dụng để thiết lập kết nối bảo mật và từ xa đến một máy chủ hoặc máy tính khác thông qua giao thức SSH (Secure Shell). Với lệnh này, bạn có thể đăng nhập vào máy chủ từ xa và thực hiện các tác vụ quản lý, truy cập và điều khiển từ xa.

A. Sử dụng lệnh SSH trong Linux

Trong phần này, chúng ta sẽ thảo luận về một số trường hợp sử dụng phổ biến của giao thức SSH.

Kết nối tới máy chủ Linux từ xa bằng lệnh ssh

Có nhiều cách để tương tác với máy chủ Linux từ xa bằng các giao thức như telnet, ftp, netcat, v.v. Tuy nhiên, những giao thức này không an toàn do thiếu tính năng mã hóa. Bạn có thể sử dụng giao thức SSH để tạo một kết nối an toàn giữa các máy chủ.

Chúng ta cần sử dụng một ứng dụng SSH client để tương tác với máy chủ từ xa. Có nhiều ứng dụng client GUI và CLI cho Linux. Tuy nhiên, trong hướng dẫn này, chúng ta sẽ sử dụng một tiện ích dòng lệnh gọi là ssh. Theo mặc định, tiện ích ssh có sẵn trên hầu hết các bản phân phối Linux. Cú pháp của lệnh SSH như sau:

$ ssh [OPTIONS]  [COMMANDS] [ARGS]

Ở đây, dấu ngoặc vuông ([]) đại diện cho các đối số tùy chọn trong khi dấu ngoặc nhọn (<>) đại diện cho các đối số bắt buộc.

Kết nối tới máy chủ từ xa bằng ứng dụng ssh:

$ ssh -l root 192.168.19.130

Trong ví dụ này, chúng ta đã chỉ định tên đăng nhập sử dụng tùy chọn -l và địa chỉ đích là 192.168.Kết nối SSH được thiết lập sau khi nhập mật khẩu chính xác. Sau đó, bạn đã có thể thực hiện các lệnh trên máy chủ từ xa giống như trên hệ thống cục bộ.

hostname

Để kết thúc phiên, chúng ta có thể sử dụng lệnh exit hoặc tổ hợp phím ctrl+D.

Hướng dẫn chạy các lệnh cơ bản fedora

Điều quan trọng cần lưu ý là bạn phải xác thực với máy chủ từ xa cho mỗi phiên kết nối mới. Để tránh nhập mật khẩu mỗi lần, bạn có thể thiết lập đăng nhập SSH không cần mật khẩu.

Thực thi các lệnh trên máy chủ từ xa bằng ssh

Trong phần trước, bạn đã thấy cách thiết lập kết nối với máy chủ từ xa, điều này chỉ phù hợp khi sử dụng máy chủ từ xa trong thời gian dài. Đôi khi, bạn chỉ cần thực thi một hoặc hai lệnh trên máy chủ từ xa. Trong những trường hợp như vậy, bạn có thể thực thi những lệnh đó mà không cần tạo ra một phiên kết nối lâu dài.

Thực thi lệnh hostname trên máy chủ từ xa:

$ ssh -l root 192.168.19.130 hostname

Tương tự, chúng ta có thể thực thi nhiều lệnh trên một máy chủ Linux từ xa:

$ ssh -l root 192.168.19.130 'hostname; pwd'

Hướng dẫn chạy các lệnh cơ bản fedora

Lưu ý rằng các lệnh phải được đặt trong dấu ngoặc kép và được phân tách bằng dấu chấm phẩy (;).

Thực thi Script trên máy chủ từ xa

Tương tự như việc thực thi các lệnh, bạn cũng có thể thực thi một script cục bộ trên máy chủ từ xa. Hiểu điều này thông qua một ví dụ.

Trước tiên, tạo một shell script đơn giản trên máy cục bộ với quyền thực thi:

$ cat script.sh

hostname pwd

Bây giờ, thực thi lệnh ssh trên máy chủ từ xa:

$ ssh [email protected] 'bash -s' < ./script.sh 

Trong ví dụ này, chúng ta sử dụng tùy chọn -s của bash để đọc script từ đầu vào tiêu chuẩn.

Hướng dẫn chạy các lệnh cơ bản fedora

Sao chép tệp giữa các máy chủ bằng lệnh ssh

Chúng ta thường làm việc với tệp và thư mục. Một hoạt động phổ biến mà người dùng thực hiện là sao chép thư mục và tệp tin. Tương tự như trên máy cục bộ, bạn có thể sao chép tệp và thư mục giữa các máy chủ từ xa bằng lệnh scp, lệnh này sao chép các tệp tin một cách an toàn sử dụng giao thức SSH.

Sao chép tệp script.sh vào thư mục /tmp của máy chủ từ xa:

$ scp script.sh [email protected]:/tmp

Bây giờ, kiểm tra xem tệp đã được sao chép hay chưa:

$ ssh [email protected] 'ls /tmp/script.sh'

Tương tự như vậy, bạn sử dụng lệnh scp để sao chép các thư mục. Tuy nhiên, bạn phải sử dụng tùy chọn -r với lệnh.

Bật nén cho SSH

SSH hỗ trợ nén dữ liệu sử dụng thuật toán nén gzip, nén tất cả các luồng dữ liệu có thể như stdin, stdout, stderr, v.v. Tùy chọn này rất hữu ích khi sử dụng kết nối mạng chậm.

Bạn có thể bật chế độ nén trên SSH bằng cách sử dụng tùy chọn -C:

$ ssh -C -l root 192.168.19.130 'hostname'

Hướng dẫn chạy các lệnh cơ bản fedora

Bật chế độ Verbose cho SSH

Người dùng Linux thường cần gỡ lỗi các phiên SSH để điều tra các vấn đề liên quan đến kết nối SSH và cấu hình, bạn có thể bật chế độ verbose để in ra các nhật ký gỡ lỗi của phiên hiện tại.

Bật chế độ verbose bằng tùy chọn -v:

$ ssh -l root 192.168.19.130

0

Ngoài ra, chúng ta có thể tăng mức độ chi tiết bằng cách sử dụng nhiều tùy chọn -v.

  • -v - đặt mức độ verbose thành 1 và cung cấp thông tin chi tiết về hoạt động phía máy khách.
  • -vv - đặt mức độ verbose thành 2 và cung cấp thông tin chi tiết về hoạt động phía máy khách và máy chủ.
  • -vvv - đặt mức độ verbose thành 3 và cung cấp thông tin chi tiết hơn về hoạt động phía máy khách và máy chủ.

Mức độ verbose tối đa được hỗ trợ bởi SSH là Hãy xem điều này trong thực tế:

$ ssh -vvv -l root 192.168.19.130 hostname

Hướng dẫn chạy các lệnh cơ bản fedora

Trong ví dụ trên, debug1 đại diện cho thông báo gỡ lỗi được bật bằng mức độ verbose Tương tự, debug2 và debug3 đại diện cho thông báo gỡ lỗi được bật bằng các mức độ verbose 2 và 3 tương ứng.

Các chuỗi thoát trong SSH

Chúng ta có thể sử dụng chuỗi thoát để quản lý phiên terminal của máy khách SSH. Hãy thảo luận về các chuỗi thoát thông thường được sử dụng với các trường hợp sử dụng phù hợp.

7.1 Tạm dừng Phiên SSH

Đôi khi, bạn phải thực hiện một số hoạt động trên máy cục bộ mà không cần chấm dứt phiên SSH hiện tại. Trong tình huống như vậy, bạn có thể tạm dừng phiên hiện tại bằng cách sử dụng chuỗi ~ + ctrl + z.

Đầu tiên, đăng nhập vào máy chủ từ xa và thực thi lệnh hostname:

$ ssh -l root 192.168.19.130

1

Tiếp theo, để tạm dừng phiên hiện tại, đầu tiên gõ ký tự ngã () và sau đó nhấn phím ctrl + z. Quan trọng để lưu ý rằng ký tự ngã () sẽ không được hiển thị trên stdout cho đến khi nhấn ctrl + z.

Bây giờ, xác nhận rằng phiên đã được tạm dừng:

$ ssh -l root 192.168.19.130

2

Ở đây, chúng ta có thể thấy rằng phiên SSH hiện tại đang chạy ở nền.

Tiếp tục phiên bằng lệnh fg và thực thi lệnh hostname:

$ ssh -l root 192.168.19.130

3

7.2 Kết thúc phiên SSH đang bị đóng băng:

Tôi chắc rằng bạn đã từng gặp tình huống phiên SSH bị đóng băng, khi phiên bị gián đoạn do mạng không ổn định. Trong trường hợp này, chúng ta không thể hủy bỏ phiên bằng lệnh exit. Tuy nhiên, chúng ta có thể chấm dứt nó bằng cách sử dụng chuỗi phím "~ + .".

Đầu tiên, đăng nhập vào máy chủ từ xa:

$ ssh -l root 192.168.19.130

Tiếp theo, sử dụng tổ hợp phím "~ + ." để chấm dứt phiên hiện tại.

Hướng dẫn chạy các lệnh cơ bản fedora

Trong ví dụ này, chúng ta có thể thấy SSH hiển thị thông báo - Kết nối tới 192.168.19.130 đã đóng.

7.3 Liệt kê các Escape Sequence được hỗ trợ

Một điều thú vị là có một escape sequence để liệt kê tất cả các escape sequence được hỗ trợ. Chúng ta có thể sử dụng chuỗi thoát "~ + ?" để liệt kê các escape sequence được hỗ trợ: Ở đây, chúng ta phải nhấn phím Enter để thoát khỏi menu trợ giúp.

Hướng dẫn chạy các lệnh cơ bản fedora

B. Cấu hình SSH trên Linux

Ở phần này, chúng ta sẽ thảo luận về cấu hình phía máy chủ để tăng cường bảo mật cho máy chủ SSH. Máy chủ SSH lưu trữ tất cả các cấu hình của nó trong tệp /etc/ssh/sshd_config. Chú ý: cần có quyền truy cập người dùng root để cập nhật cấu hình SSH.

Hiển thị SSH Banner:

Là một thực hành tốt, bạn nên luôn hiển thị banner trước khi thiết lập kết nối SSH. Trong một số trường hợp, điều này làm giảm khả năng người dùng trái phép truy cập vào các máy chủ từ xa. Hãy xem cách bật cài đặt này từng bước.

Đầu tiên, tạo một tệp văn bản trên máy chủ từ xa với một thông báo cảnh báo:

$ ssh -l root 192.168.19.130

5

Tiếp theo, thêm thông báo banner sau:

$ ssh -l root 192.168.19.130

6

Sau đó, mở tệp /etc/ssh/sshd_config và chỉ định tệp với chỉ thị Banner:

$ ssh -l root 192.168.19.130

7

Khởi động lại dịch vụ sshd và kết thúc phiên bằng lệnh exit:

$ ssh -l root 192.168.19.130

8

Cuối cùng, xác minh banner bằng cách đăng nhập vào máy chủ từ xa:

$ ssh -l root 192.168.19.130

Hướng dẫn chạy các lệnh cơ bản fedora

Ở đây, chúng ta có thể thấy rằng máy chủ hiển thị banner SSH đúng.

Vô hiệu hóa đăng nhập Root qua SSH:

Cho đến nay, chúng ta đã sử dụng người dùng root để truy cập vào máy chủ từ xa. Tuy nhiên, điều này vi phạm nguyên tắc của tối thiểu quyền. Trong một môi trường sản xuất, quyền truy cập người dùng root luôn bị hạn chế để nâng cao bảo mật.

Chúng ta có thể sử dụng chỉ thị PermitRootLogin để vô hiệu hóa đăng nhập người dùng root.

Đầu tiên, mở tệp /etc/ssh/sshd_config và sử dụng tùy chọn no với chỉ thị PermitRootLogin:

$ ssh -l root 192.168.19.130

9

Sau đó, khởi động lại dịch vụ sshd và kết thúc phiên bằng lệnh exit:

$ ssh -l root 192.168.19.130

8

Cuối cùng, xác minh điều này bằng cách tạo một phiên SSH mới:

$ ssh -l root 192.168.19.130

Hướng dẫn chạy các lệnh cơ bản fedora

Ở đây, chúng ta có thể thấy rằng không thể đăng nhập vào máy chủ từ xa bằng người dùng root. Để cho phép đăng nhập người dùng root, bạn sử dụng tùy chọn yes với cùng chỉ thị.

Thay đổi cổng SSH mặc định:

Mặc định, SSH sử dụng cổng TCP Tuy nhiên, chúng ta có thể cấu hình SSH để chạy trên một cổng khác, ví dụ 8088.

Đầu tiên, mở tệp /etc/ssh/sshd_config và sử dụng giá trị 8088 với chỉ thị Port:

hostname

2

Tiếp theo, khởi động lại dịch vụ sshd và kết thúc phiên:

$ ssh -l root 192.168.19.130

8

Bây giờ, đăng nhập vào máy chủ từ xa:

hostname

4

Hướng dẫn chạy các lệnh cơ bản fedora

Trong ví dụ này, chúng ta đã sử dụng tùy chọn -p để chỉ định số cổng.

Trong một số trường hợp, bạn cần thực hiện một số bước khác để cho phép giao tiếp trên một cổng không mặc định. Ví dụ: xác định các cổng có sẵn, cập nhật quy tắc tường lửa, thiết lập SELinux, v.v.