10 ví dụ lệnh SSH cơ bản trên Centos / Ubuntu / Debian / 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.
Đ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'
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 root@192.168.19.130 '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.
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 root@192.168.19.130:/tmp
Bây giờ, kiểm tra xem tệp đã được sao chép hay chưa:
$ ssh root@192.168.19.130 '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'
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 -v -l root 192.168.19.130 hostname
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
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 # hostname
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:
$ jobs
Ở đâ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:
$ fg %1
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.
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.
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:
# vi /etc/banner.txt
Tiếp theo, thêm thông báo banner sau:
********************************************************************* Warning !!! You are trying to log in to techmint.com's server. All the activities on this server are monitored. Terminate the session immediately if you are not an authorized user. *********************************************************************
Sau đó, mở tệp /etc/ssh/sshd_config và chỉ định tệp với chỉ thị Banner:
Banner /etc/banner.txt
Khởi động lại dịch vụ sshd và kết thúc phiên bằng lệnh exit:
# systemctl restart sshd # exit
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
Ở đâ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:
PermitRootLogin no
Sau đó, khởi động lại dịch vụ sshd và kết thúc phiên bằng lệnh exit:
# systemctl restart sshd # exit
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
Ở đâ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:
Port 8088
Tiếp theo, khởi động lại dịch vụ sshd và kết thúc phiên:
# systemctl restart sshd # exit
Bây giờ, đăng nhập vào máy chủ từ xa:
$ ssh -p 8088 -l root 192.168.19.130
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.
Mọi người cũng tìm kiếm: du ssh, "ssh -l", ssh vi, lệnh ssh, "ssh -v", lệnh ssh trong linux, ubuntu ssh, ssh linux.