Lệnh ssh trên linux

Nếu đang sử dụng Linux, chắc chắn bạn đã nghe nói về một công cụ được gọi là SSH. Secure Shell, hay thường được gọi là SSH, là một giao thức mạng để thiết lập các kết nối bảo mật giữa client và server từ xa. Nó được thiết kế để cho phép người dùng đăng nhập an toàn vào nhiều loại máy tính khác nhau từ xa qua mạng. Sau đây, bài viết sẽ hướng dẫn bạn cách thiết lập và sao chép các SSH key vào server một cách dễ dàng.

Cài đặt SSH

Để bắt đầu, bạn phải cài đặt SSH server. Bạn có thể tìm và cài đặt gói openssh-server trong Software Center hoặc trình quản lý gói. Ngoài ra, nếu bạn đang sử dụng server (hoặc chỉ thích sử dụng Terminal), hãy mở một Terminal và nhập lệnh sau:

Ubuntu/Debian

sudo apt install openssh-server

Fedora/CentOS/REHL

sudo dnf install openssh-server

Kích hoạt SSH trong Linux

Sau khi OpenSSH server đã được cài đặt trên máy, bạn cần khởi động và kích hoạt systemd. Để làm điều đó, bạn chỉ cần gõ lệnh sau vào Terminal:

sudo systemctl enable --now ssh

Tạo SSH key

Khi đã cài đặt server openssh, bạn có thể bắt đầu tạo các cặp SSH key. Trước khi tiếp tục, hãy đảm bảo bạn không có cặp key nào hiện có, vì quá trình này sẽ ghi đè cặp key đã tồn tại.

Để kiểm tra xem hiện tại bạn có cặp key nào hay không, hãy sử dụng lệnh:

ls -la ~/.ssh

Nếu hiện tại bạn có một cặp key, lệnh trên sẽ hiển thị các file “id_rsa”“id_rsa.pub”.

Lệnh ssh trên linux
Các file “id_rsa” và “id_rsa.pub” được hiển thị

Sau khi xác minh rằng hiện tại bạn không có cặp SSH key nào, bạn có thể tiến hành tạo một cặp key mới. Nếu không, hãy sao lưu các key cũ để tránh làm mất chúng.

Để tạo key mới, hãy sử dụng lệnh:

ssh-keygen -t rsa -b 4096

Lệnh trên gọi tiện ích ssh-keygen để tạo cặp SSH key một cách tương tác. Sử dụng tùy chọn -t để chỉ định loại key được tạo. Trong trường hợp này, ví dụ sẽ tạo một key RSA.

Ví dụ cũng sử dụng tùy chọn -b để chỉ định số bit trong key. Nếu bạn sử dụng key RSA, kích thước bit tối thiểu là 1024. Nếu không được chỉ định, nó sẽ tạo ra key có 3072 bit.

Lệnh ssh trên linux
Tùy chọn -b để chỉ định số bit trong key

Bạn nên sử dụng vị trí mặc định để lưu trữ các SSH key để tránh phải nhập đường dẫn khi kết nối với SSH bằng các key.

Nếu bạn không muốn mã hóa key của mình bằng cụm mật khẩu, hãy nhấn Enter để bỏ qua.

Sao chép key vào máy chủ từ xa

Bây giờ, bài viết đã tạo một cặp SSH key mới và giờ cần upload nó lên máy tính từ xa muốn quản lý.

Cách hiệu quả nhất để làm điều này là sử dụng lệnh ssh-copy-id. Sử dụng lệnh như sau:

ssh-copy-id remote_user@remote_IP

Nếu đang sử dụng keyfile có tên file riêng, bạn có thể sử dụng lệnh sau để chỉ định đường dẫn đến keyfile.

ssh-copy-id -i ~/.ssh/id_rsa remote_user@remote_IP

Nếu đăng nhập vào máy từ xa lần đầu tiên, bạn sẽ cần phải chấp nhận fingerprint.

Tiếp theo, nhập mật khẩu SSH cho người dùng từ xa.

Sau khi được xác thực, lệnh ssh-copy-id sẽ nối nội dung của key id_rsa.pub vào file “~/.ssh/authorized_keys” trên máy từ xa và đóng kết nối.

Lệnh ssh trên linux
Sao chép key vào máy chủ từ xa
  • Cách quản lý server Linux từ xa bằng SSH

Đăng nhập vào máy từ xa

Khi đã hoàn thành xong tất cả các bước trên, bây giờ, bạn có thể đăng nhập vào máy chủ từ xa mà không cần mật khẩu.

Bạn có thể kiểm tra điều này bằng cách sử dụng lệnh:

ssh remote_user@remote_ip

Trừ khi bạn đã bật cụm mật khẩu cho key của mình, nếu không bạn sẽ được đăng nhập tự động.

Chúc bạn thực hiện thành công!

SSH là gì?

SSH là giao thức đăng nhập vào server từ xa, cho phép người dùng kiểm soát, chỉnh sửa và quản trị dữ liệu của server thông qua nền tảng Internet. SSH là viết tắt của Secure Socket Shell. SSH cũng giúp việc kết nối của mạng lưới máy chủ và máy khách an toàn, hiệu quả và bảo mật thông tin tốt hơn. Vậy cơ sở hoạt động của SSH là gì? Hãy cùng tìm hiểu nhé!

Lệnh ssh trên linux
SSH tạo ra môi trường dữ liệu an toàn cho người dùng khi truy cập mạng

Tương tự SSL, SSH cũng có chức năng mã hóa dữ liệu đường truyền. Điều này phục vụ cho quá trình chuyền tập tin, chạy chương trình. SSH cũng chuyển tiếp kết nối TCP/IP qua liên kết an toàn…

SSH có bảo mật không?

Lệnh ssh trên linux
Với SSH người dùng sẽ được bảo vệ hoàn toàn khỏi các cuộc tấn công mật mã

Giao thức SSH cung cấp các dịch vụ của máy chủ như xác thực, mã hóa, xác minh tính toàn vẹn dữ liệu và xác thực khách hàng. Máy chủ được SSH xác thực thông qua việc thực hiện DSA, RSA hoặc ECDSA thuật toán mã khóa công khai.

Để xác minh mã hóa và toàn vẹn dữ liệu, một số thuật toán được cung cấp mà mỗi sản phẩm SSH có thể thực hiện trong một khoảng thời gian nhất định. Trong khi đó, xác thực khách hàng lại được SSH thực hiện bằng cách sử dụng mật khẩu, khóa công khai, chỉ 1 tài khoản login trên 1 thời diểm (single sign-on), và các phương pháp khác.

Đặc điểm kỹ thuật giao thức SSH2 được công khai và đã được xem xét bởi một số người thực hiện độc lập. Vì vậy, khi thực hiện đúng và sử dụng chúng, giao thức này hoàn toàn an toàn để bảo mật thông tin và chống lại hầu hết tất cả các cuộc tấn công mật mã.

Khi nào nên sử dụng SSH?

Lệnh ssh trên linux
Nên lựa chọn SSH nếu muốn cung cấp môi trường an toàn cho người tiêu dùng

SSH hoạt động ở tầng thứ 4 trong mô hình TCP/IP. Nó cho phép tương tác giữa máy chủ và máy khách, sử dụng cơ chế mã hoá nhằm ngăn chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền. Đây là điều mà các giao thức trước đây như telnet, rlogin không đáp ứng được. Bạn có thể tìm hiểu thêm về mô hình TCP/IP trong bài viết: “TCP/IP là gì?“.

TCP/IP viết tắt của Transmission Control Protocol (TCP) và Internet Protocol (IP) là giao thức cài đặt truyền thông, chồng giao thức mà hầu hết các mạng máy tính ngày nay đều sử dụng để kết nối. TCP/IP được đặt theo tên của 2 giao thức là giao thức điều khiển giao vận và giao thức liên mạng.

Vì vây, bạn nên lựa chọn sử dụng SSH nếu muốn thiết lập một kết nối mạng được mã hóa và cung cấp môi trường an toàn cho người tiêu dùng. Các công cụ SSH phổ biến hiện nay có thể kể đến như PuTTY, OpenSSH,..

SSH hoạt động như thế nào?

Quy trình hoạt động của SSH có thể tóm gọn thông qua 3 bước đơn giản sau:

  • Bước 1: Định danh host – xác định định danh của hệ thống tham gia phiên làm việc SSH. Đơn giản hơn, đây là bước khởi tạo kết nối SSH. Kết nối này là một kênh giao tiếp bảo mật giữa server và client.
  • Bước 2: Mã hoá dữ liệu – thiết lập kênh làm việc mã hoá. Sau khi Client xác định được định danh của Server 1 kết nối bảo mật đối xứng được hình thành giữa 2 bên.
  • Bước 3: Chứng thực và giải mã – xác thực người sử dụng có quyền đăng nhập hệ thống. Kết nối này sẽ được sử dụng để Server xác thực Client.
Lệnh ssh trên linux

Ưu điểm của SSH là gì?

Lệnh ssh trên linux
SSH giúp mã hóa và truyền tải dữ liệu an toàn giữa host và client

Lý do khiến nhiều người lựa chọn sử dụng giao thức này xuất phát từ những ưu điểm vượt trội của SSH so với các giao thức khác. SSH có khả năng mã hóa và truyền tải dữ liệu an toàn giữa mạng lưới host và client. Host đại diện cho máy chủ từ xa bạn muốn kết nối tới và client là máy tính của bạn dùng để truy cập tới host.

Lợi thế thứ hai là có nhiều cách khác nhau giúp việc mã hóa qua SSH được thực hiện hiệu quả và toàn vẹn như:

  • Symmetrical encryption.
  • Asymmetrical encryption.
  • Hashing.

Các kỹ thuật mã hóa SSH là gì?

Hãy cùng Mắt Bão tìm hiểu chi tiết về 3 kỹ thuật mã hóa SSH:

  • SSH Symmetrical Encryption
  • SSH Asymmetrical Encrytion
  • SSH Hashing

SSH Symmetrical Encryption là gì?

Lệnh ssh trên linux
Symmetrical Encryption hoạt động dựa trên secret key

Symmetric encryption là một dạng mã hóa sử dụng secret key (chìa khóa bí mật) ở cả 2 chiều mã hóa và giải mã tin nhắn bởi cả host và client. Điều này có nghĩa là bất kỳ ai nắm được khóa đều có thể giải mã tin nhắn trong quá trình chuyền.

Nguyên tắc hoạt động của Symmetrical Encryption là cả client và server tạo chung một key bí mật và key đó không được tiết lộ cho bên thứ ba. Quá trình tạo symmetric key được thực hiện bởi key exchange algorithm. Key đó được dùng như chìa khóa mã hóa cho cả hai đầu kết nối.

Điều khiến cho thuật toán này an toàn là vì key không được truyền giữa client và host. Thay vào đó, cả 2 máy tính chia sẽ thông tin chung và sau đó sử dụng chúng để tính ra khóa bí mật. Vì vậy, kể cả có máy khác bắt được thông tin chung, nó cũng không thể tính ra key bí mật vì không biết được thuật toán tạo key.

SSH Asymmetrical Encrytion là gì?

Lệnh ssh trên linux
Asymmetrical Encrytion sử dụng cặp khóa gọi là public-private key pair

Không giống với symmetrical encryption, asymmetrical encryption sử dụng 2 khóa khác nhau để mã hóa và giải mã. 2 khóa này được gọi là public key và private key. Cả 2 hình thành nên một cặp khóa là public-private key pair. Trong đó, khóa public sẽ được công khai cho tất cả các bên liên quan còn private key phải luôn luôn được đảm bảo an toàn.

Asymmetrical Encrytion chỉ được sử dụng trong quá trình trao đổi thuật toán của khóa của symmetric encryption. trước khi bắt đầu một phiên giao dịch an toàn. Sau khi kết nối symmetrict an toàn đã được thiết lập, server sử dụng public key của client để tạo và challenge và truyền nó tới client để chứng thực. Nếu client có thể giải mã tin nhắn, có nghĩa là nó đang giữ đúng private key cần thiết cho kết nối.

SSH Hashing là gì?

Hash một chiều khác với cả 2 phương thức mã hóa trên ở chỗ nó không được sinh ra để giải mã. Thay vào đó, nó tạo ra một giá trị duy nhất với độ dài nhất định cho mỗi lần nhập liệu mà không có hướng nào khác để khai thác.

Vì vậy, SSH sử dụng hashes để xác nhận tính xác thực của tin nhắn. Nó được thực hiện bởi HMACs. Việc này đảm bảo lệnh không bị giả mạo bởi bất kỳ phương thức nào.

Giai đoạn thiết lập kết nối của SSH

Lệnh ssh trên linux
Giai đoạn thiết lập kết nối của SSH được thực hiện trong 3 bước

Có thể thấy, phương thức hoạt động của SSH có thể dễ dàng tóm gọn trong 3 bước. Ở phần này, hãy cùng chúng tôi tìm hiểu rõ hơn về các giai đoạn thiết lập kết nối của SSH.

Xác định host

Việc định danh host được thực hiện qua việc trao đổi khoá. Mỗi máy tính điều khiển SSH có một khoá định danh duy nhất. Chúng bao gồm hai thành phần: khoá riêng tư và khoá công cộng. Khoá công cộng được sử dụng khi cần trao đổi giữa các máy chủ. Trong khi khóa riêng tư thì được dùng để giải mã riêng.

Khi hai hệ thống bắt đầu một phiên làm việc SSH, máy chủ sẽ gửi khoá công cộng của nó cho máy khách. Máy khách sinh ra một khoá phiên ngẫu nhiên. Sau đó nó mã hoá khoá này bằng khoá công cộng của máy chủ. Cuối cùng nó được gửi lại cho máy chủ. Máy chủ sẽ giải mã khoá phiên này bằng khoá riêng của mình và nhận được khoá phiên. Quá trình này được xem như các bước nhận diện máy chủ và máy khách.

SSH Session Encryption Negotiation là gì?

Session Encryption Negotiation còn được gọi là “Mã hóa dữ liệu”. Sau khi hoàn tất việc thiết lập phiên làm việc bảo mật (trao đổi khoá, định danh, xác định host), quá trình trao đổi dữ liệu diễn ra thông qua một bước trung gian đó là mã hoá/giải mã, Ở bước này, dữ liệu gửi/nhận trên đường truyền được giải mã theo cơ chế đã thoả thuận trước. Các cơ chế mã hoá thường được chọn bao gồm: 3DES, IDEA, và Blowfish.

Lệnh ssh trên linux
Người dùng có thể lựa chọn mã hóa theo nhiều cơ chế khác nhau

Chứng thực người dùng

Chứng thực người dùng là bước cuối cùng trong ba bước. Đây cũng đồng thời là bước đa dạng nhất vì có thể sử dụng nhiều cách khác nhau để chứng thực người dùng. Thông thường, người ta thường sử dụng các cách như chứng thực rhosts, chứng thực RSA, sử dụng ssh-keygen và ssh-agent,…

So sánh SSH và SSL/TLS

Lệnh ssh trên linux
SSH thể hiện sự hơn thế so với SSL/TLS trong quá trình vận chuyển dữ liệu

Điểm chung giữa hai giao thức là nó được sử dụng để xác thực các bên. Chúng dùng để đảm bảo an toàn dữ liệu giao tiếp trong khi vận chuyển dữ liệu.

So với SSL/TLS, SSH có thể được coi là một phiên bản đơn giản hơn. Tuy vậy, nó lại có khả năng kết nối máy trạm và máy khách một cách đáng tin cậy nhờ các dữ liệu đã được mã hóa, trong khi giao thức TLS thể hiện sự kém an toàn.

Cách dùng SSH kết nối server Linux

Lệnh ssh trên linux
Có nhiều cách để kết nối server Linux và sử dụng SSH

Nắm bắt khái niệm của “SSH là gì?” thôi chưa đủ. Bạn cần phải biết cách sử dụng nó trong thực tế. Dưới đây là bài viết hướng dẫn bạn cách cài đặt SSH cho server Linux. Hướng dẫn kết nối SSH dưới đây cũng có thể áp dụng cho Cloud Server Linux.

Cách thiết lập server Linux chấp nhận các kết nối

Muốn dùng SSH kết nối server Linux, bạn cần thiết lập trên server trước. Tùy thuộc vào phần cứng và bản phân phối Linux việc thiết lập có thể thay đổi. Hướng dẫn sau đây chạy Ubuntu 16.04 LTS.

Bạn sẽ cần phải cài đặt công cụ đăng nhập từ xa cho giao thức SSH. Một trong những công cụ phổ biến nhất là OpenSSH. Bạn có thể tìm bản download tại đây: https://www.openssh.com/portable.html. Cách download OpenSSH, mở một terminal mới (Ctrl + Alt + T) và nhập lệnh sau:

sudo apt-get update

Điều này thực hiện cập nhật và đảm bảo bạn có các kho lưu trữ mới nhất. Trước khi tiến hành cài đặt OpenSSH, hãy kiểm tra mọi nâng cấp. Trong terminal, hãy chạy lệnh:

sudo apt-get upgrade

Khi bạn đã cập nhật và nâng cấp, hãy mở một dòng lệnh mới và nhập:

sudo apt-get install openssh-server

Định cấu hình cài đặt SSH cho server

Sau khi OpenSSH đã được cài đặt ở phía server, bạn có thể chỉnh sửa thông tin cấu hình cơ bản. Mở một terminal mới và nhập chuỗi sau đây để mở file cấu hình SSH:

 sudo nano /etc/ssh/sshd_config

Mặc định, SSH server của bạn sẽ hoạt động trên cổng 22. Bạn có thể tự thay đổi từ cổng 22 sang cổng bạn chọn. Ngoài ra, bạn có thể tăng cường bảo mật bằng cách nhập số đăng nhập tối đa. Trong Port, tìm dòng MaxAuthTries . Bạn có thể nhập bất kỳ số nào ở đây. Vì vậy, để chọn số lần đăng nhập tối đa là 4, hãy nhập:

MaxAuthTries 4

Sau khi cài đặt OpenSSH, SSH server sẽ chạy. Nhưng để kiểm tra, chỉ cần mở một terminal và chạy:

sudo service ssh status

Điều này sẽ trả về một thông báo rằng SSH đã được kích hoạt. Để khởi động SSH, hãy mở một dòng lệnh và nhập:

sudo service ssh start

Và để ngăn SSH chạy, hãy nhập:

sudo service ssh stop

Kết nối SSH từ Window

Do Window không tích hợp SSH Command nên người dùng phải tải về các  mã nguồn mở hay ứng dụng đóng vai trò là “bên thứ ba”. Bạn có thể sử dụng PuTTyZOC7 để kết nối trên Window.

SSH PuTTy là gì?

PuTTy là một phần mềm dùng để điều khiển server thông qua mạng Internet. Để kết nối thành công với PuTTy, bạn thực hiện theo các bước sau

  • Bước 1: Tải về PuTTy
  • Bước 2: Khởi động chương trình PuTTy vừa cài đặt
  • Bước 3: Nhập thông tin server cần điều khiển
  • Bước 4: Nhập thông tin username và password

Trong quá trình kết nối, bạn cần lưu ý độ tương thích giữa các thông số. Đặc biệt lưu ý số cổng trong khung Port và số cổng SSH Server yêu cầu. Ngoài ra, người dùng sẽ nhận được các cảnh báo bảo mật. Nếu đây là lần đầu tiên sử dụng, bạn có thể click vào YES và tiếp tục. Nếu bạn đã từng truy cập, hãy cẩn thận vì đây có thể là một SSH Server độc hại.

Lệnh ssh trên linux
Giao diện Putty trên Windows

Bên cạnh kết nối và cấu hình SSH Server, với PuTTY, người dùng còn có thể sử dụng file Private Key để sử dụng các ứng dụng khác cần kết nối với SSH. Khi khởi động PuTTY, bạn sẽ tìm thấy tùy chọn này tại cửa sổ PuTTY Configuration. Sau đó, tiếp tục truy cập theo đường dẫn Connection => SSH => Auth. Khi cửa sổ hiện lên, click Browse, chọn file Private Key: C:MySSHid_rsa.ppk  và click Open để bắt đầu.

SSH ZOC7 Terminal là gì?

Tương tự PuTTY, ZOC7 cũng là một công cụ sử dụng giao thức SSH. ZOC7 được dùng để cài đặt và chỉnh sửa server. Muốn kết nối, bạn cần thực hiện theo các bước sau:

  • Bước 1: Tải về và cài đặt ZOC7 Terminal
  • Bước 2: Điền thông tin server và port vào cửa sổ Log in
  • Bước 3: Chọn Secure Shell trong ô Connection Type
  • Bước 4: Chọn Linux trong ô Emulation
  • Bước 5: Nhập Username và Password
  • Bước 6: Nhấn Connect để kết nối với server

Kết nối SSH từ Linux/MacOS

SSH command thường được tích hợp trên các hệ điều hành dựa trên UNIX như Linux và MacOS. Để kết nối SSH Server từ một trong hai hệ điều hành trên, bạn thực hiện theo các bước sau:

Bước 1: Mở cửa sổ Terminal

  • Hệ điều hành MacOS: Finder =>Applications =>Utilities =>Terminal.
  • Hệ điều hành Linux: tìm shortcut Terminal trong menu ứng dụng.

Bước 2: Nhập lệnh ssh  vào cửa sổ Terminal theo cú pháp mới – thay thế username bằng tên người dùng và ssh.server bằng tên máy chủ hoặc IP SSH Server.

Bước 3: Xác nhận và nhập thông tin mật khẩu

Thêm Public Key vào Server

Public Key là file text chứa dữ liệu mã hóa có thể cài đặt cho bất kỳ server nào. Trên nền tảng Linux, bạn có thể bổ sung Public Key theo các bước sau:

  • Bước 1: Lưu thông tin Public Key để xác thực đăng nhập sử dụng key tại ~/.ssh/authorized_keys
  • Bước 2: Copy nội dung Public Key, chèn vào cuối file và lưu lại
  • Bước 3: Bật chế độ đăng nhập và kích hoạt các tham số PubkeyAuthentication yes  và AuthorizedKeysFile .ssh/authorized_keys  trong SSH Config
  • Bước 4: Khởi động lại SSH Service

Hy vọng, bài viết của Mắt Bão đã giúp bạn có cái  nhìn toàn diện về giao thức SSH đang được ưa chuộng. Đồng thời, bạn đọc sẽ được cung cấp lời giải thích xác đáng nhất cho sự ra đi của Telnet và sự lên ngôi của giao thức SSH trong thời gian gần đây. Nếu cần sự hỗ trợ về máy chủ, hãy liên hệ ngay với Mắt BãoNhà cung cấp dịch vụ cho thuê máy chủ hàng đầu với hơn 16 năm kinh nghiệm.

Bạn có thể tham khảo thêm các bài viết có chủ đề liên quan sau:

  • SSL là gì? Tổng quan về chứng chỉ SSL quan trọng phải biết
  • FTP là gì? Cách chỉnh sửa file trên hosting cực nhanh chóng