SSH là một giao thức rất phổ biến hiện nay, đi kèm với hầu hết các bản phân phối Linux, Macintosh OS X, Sun Solaris, OpenBSD và hầu như tất cả các hệ điều hành lấy cảm hứng từ Unix khác. Vậy SSH là gì? Cùng tôi tìm hiểu ngay trong bài viết này.
SSH là gì?
SSH – hay Secure (Socket) Shell là một giao thức mạng cung cấp cho người dùng (đặc biệt là các quản trị viên mạng) cách truy cập an toàn vào một máy tính qua một mạng không được bảo mật. Bên cạnh đó, SSH cũng cung cấp nhiều bộ tiện ích để triển khai giao thức SSH. Secure Shell là một giao thức có khả năng xác thực password mạnh mẽ và giao tiếp dữ liệu được mã hóa giữa hai máy tính kết nối với nhau qua một mạng mở như Internet.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 20 SSH là gì?](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/ssh-la-gi-1.webp)
Bên cạnh đó, SSH cũng được sử dụng phổ biến bởi các QTV mạng để quản lý hệ thống và ứng dụng từ xa, cho phép đăng nhập vào các máy tính khác qua mạng và thực hiện các tác vụ cơ bản như thực thi lệnh, di chuyển file,… SSH bao gồm cả giao thức mạng lẫn một bộ tiện ích để triển khai giao thức đó. Secure Shell sử dụng mô hình client-server, kết nối một ứng dụng Secure Shell client (nơi session được hiển thị) với một SSH server (nơi session chạy).
Triển khai SSH thường hỗ trợ cả các giao thức ứng dụng, dùng cho giả lập terminal hay truyền file. Ngoài ra, SSH cũng có thể được dùng để tạo các tunnel bảo mật cho nhiều giao thức ứng dụng. Chẳng hạn như để chạy các phiên đồ họa X Windows System từ xa, một SSH server theo mặc định sẽ nghe trên cổng TCP 22.
Ngoài ra, bạn có thể tham khảo về giao thức mạng qua các bài viết sau:
Giao thức SSH hoạt động như thế nào?
Secure Shell được tạo ra để thay thế các chương tình giả lập terminal hoặc chương trình đăng nhập không an toàn như Telnet, rlogin (remote login) hay rsh (remote shell). Bên cạnh đó, SSH cũng hỗ trợ các chức năng tương tự như đăng nhập và chạy các terminal session trên hệ thống ở xa. SSH cũng thay thế các chương trình truyền file như FTP (File Transfer Protocol) hay rcp (remote copy).
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 23 Giao thức SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2021/07/ssh-la-gi.webp)
Chức năng đơn giản nhất của SSH là kết nối đến một host ở xa cho một phiên terminal, bằng lệnh như sau:
ssh server.example.org
Qua lệnh này, client sẽ kết nối đến một server có tên server.example.com bằng user ID là UserName. Nếu đây là lần kết nối đầu tiên giữa host và server, người dùng sẽ được thông báo về public key fingerprint của host ở xa và nhắc người dùng kết nối:
The authenticity of host 'sample.ssh.com' cannot be established. DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10. Are you sure you want to continue connecting (yes/no)?
Nếu chọn yes, phiên sẽ được tiếp tục và host key được lưu trữ trong file known_hosts của hệ thống cục bộ. Đây là một file ẩn và được lưu trữ mặc định trong một directory ẩn tên là /.ssh/known_hosts, trong home directory của người dùng. Sau đó, client có thể kết nối trực tiếp đến server đó lần nữa mà không cần phê duyệt; host key sẽ xác thực kết nối.
Chức năng của giao thức SSH
SSH hỗ trợ các chức năng sau đây:
- Truy cập từ xa an toàn vào các hệ thống hay thiết bị mạng có hỗ trợ SSH cho người dùng và các quá trình tự động khác.
- Hỗ trợ phiên chuyển file an toàn.
- Tự động truyền file an toàn.
- Thực thi lệnh an toàn trên các máy hay hệ thống từ xa.
- Quản lý an toàn các thành phần cơ sở hạ tầng mạng.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 24 Chức năng của SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-1.webp)
SSH có thể được sử dụng để enable các terminal session và nên được dùng thay thế cho các chương trình Telnet có độ bảo mật kém hơn. Ngoài ra, SSH cũng thường được dùng trong các script và nhiều phần mềm khác để cho phép các chương trình, hệ thống truy cập an toàn từ xa vào các tài nguyên khác.
Ứng dụng của SSH là gì? Nên sử dụng SSH khi nào?
Một số ứng dụng của SSH cũng như thời điểm nên sử dụng SSH phải kể đến như:
- SSH có mặt trong mọi datacenter và được đi kèm mặc định trong mọi server Unix, Linux và Mac. Các kết nối SSH hiện đang được ứng dụng để bảo mật nhiều loại giao tiếp khác nhau giữa một máy cục bộ và một host từ xa. Trong đó bao gồm cả quyền truy cập an toàn từ xa vào các tài nguyên, thực thi lệnh từ xa hay chuyển các bản patch, bản cập nhật phần mềm,… Bên cạnh khả năng tạo ra các kênh an toàn cho máy cục bộ và máy ở xa, SSH cũng dùng để quản lý router, phần cứng của server, các nền tảng ảo hóa, hệ điều hành và có trong các ứng dụng quản lý và truyền file,…
- Secure Shell được dùng để kết nối đến các server, thực hiện các thay đổi, upload,… bằng các công cụ hay thông qua terminal. Bên cạnh đó, các SSH key cũng được dùng để tự động truy cập vào server, chủ yếu được ứng dụng trong các script, hệ thống backup hay các công cụ quản lý cấu hình,…
- SSH được thiết kế với mục đích đề cao sự thuận tiện và khả năng làm việc xuyên ranh giới giữ các tổ chức, do đó SSH key cung cấp một single sign-on (SSO – đăng nhập một lần) để người dùng có thể nhanh chóng chuyển qua lại giữa các tài khoản mà không cần tốn thời gian nhập password.
- Hơn nữa, SSH không chỉ xác thực qua một kết nối được mã hóa, mà mọi SSH traffic đều được mã hóa; cho dù người dùng đang truyền file, duyệt web hay chạy lệnh, mọi tác vụ của họ đều được bảo mật tuyệt đối.
- Ta có thể sử dụng SSH với một user ID thông thường và password làm thông tin xác thực, tuy nhiên SSH chủ yếu dựa vào các public key pair để xác thực các host với nhau. Người dùng cá nhân vẫn phải sử dụng user ID và password – hoặc các phương pháp xác thực khác để có thể kết nối đến host từ xa, tuy nhiên máy cục bộ và máy từ xa sẽ xác thực riêng biệt với nhau. Việc này được thực hiện bằng cách tạo một public key pair duy nhất cho từng host trong quá tình giao tiếp. Mỗi session yêu cầu có hai public key pair: một key pair dùng để xác thực máy từ xa với máy cục bộ và bộ key pair có nhiệm vụ ngược lại.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 25 Ứng dụng của SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-2.webp)
Ưu điểm của SSH
SSH cho phép mã hóa dữ liệu để những kẻ tấn công không thể đánh cắp thông tin người dùng và mật khẩu của bạn. SSH cũng cho phép tạo các giao thức truyền dữ liệu khác như FTP. Dưới đây là danh sách những điều cụ thể mà SSH bảo vệ bạn.
- IP source routing.
- Giả mạo DNS.
- Nghe lén dữ liệu được truyền.
- Giả mạo địa chỉ IP.
- Thao túng dữ liệu trên routers.
Một số vấn đề bảo mật của SSH
Tuy nhiên, SSH cũng có một số lỗ hổng bảo mật nhất định mà các doanh nghiệp nên chú ý. Cụ thể, các key được lưu trữ trên hệ thống client có thể tích tụ dần theo thời gian, vì vậy cần có được cách quản lý host key hiệu quả, đặc biệt là với những nhân viên IT – những người cần truy cập vào các server từ xa để quản lý. Ngoài ra, dữ liệu được lưu trong file SSH known_file có thể dùng để lấy quyền truy cập đã được xác thực vào hệ thống từ xa.
Do đó, các doanh nghiệp cần có một quy trình tiêu chuẩn để duy trì quyền kiểm soát các file này. Bên cạnh đó, các developer cũng cần cẩn thận khi kết hợp các lệnh hay hàm SSH với nhau trong script hoặc các loại chương trình khác. Mặc dù ta có thể đưa ra lệnh SSH chứa user ID và password để xác thực người dùng của máy cục bộ với một tài khoản trên host từ xa, nhưng việc này sẽ làm lộ thông tin xác thực cho những kẻ tấn công để truy cập vào mã nguồn.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 26 Bảo mật của SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-3.webp)
Shellshock, một lỗ hổng bảo mật trong Bash command processor, có thể được thực thi qua SSH nhưng đó là một lỗ hổng trong Bash chứ không phải trong SSH. Mối đe dọa lớn nhất đối với SSH chính là khả năng quản lý key không tốt.
Nếu không tạo, xoay vòng và loại bỏ key SSH tập trung thích hợp, các tổ chức hoàn toàn có thể mất quyền kiểm soát những người có quyền truy cập vào tài nguyên, đặc biệt là khi SSH được sử dụng trong các quy trình app-to-app tự động. Khi sử dụng VPS, người ta thường sử dụng SSH để thiết lập kết nối. Việc này giúp đảm bảo an toàn thông tin truyền đi giữa máy tính của bạn và máy chủ.
Các kỹ thuật mã hóa khác
Ưu điểm của SSH so với các giao thức cũ là khả năng mã hóa và truyền tải dữ liệu một cách an toàn giữ host và client.
Có 3 cách để mã hóa khi sử dụng SSH
- Symmetrical encryption.
- Asymmetrical encrytion.
- Mã hóa Hashing.
Symmetrical encryption
Symmetrical encryption là loại mã hóa trong đó chỉ có một khóa (secret key) được sử dụng để vừa mã hóa vừa giải mã thông tin ở cả trên host và client. Các thực thể giao tiếp thông qua mã hóa đối xứng phải trao đổi khóa để có thể được sử dụng trong quá trình giải mã. Phương pháp mã hóa này khác với asymmetrical encrytion sử dụng một cặp khóa, một khóa công khai (public key) và một khóa riêng tư (private key) được sử dụng để mã hóa và giải mã tin nhắn.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 27 Symmetrical-encrytion](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/symmetric_encryption.png)
Bằng cách sử dụng các thuật toán Symmetrical encryption, dữ liệu được chuyển đổi sang dạng không thể hiểu được bởi bất kỳ ai không có khóa bí mật (secret key) để giải mã. Khi người nhận sở hữu khóa có tin nhắn, thuật toán sẽ đảo ngược hành động để tin nhắn được trả về dạng ban đầu và dễ hiểu.
Khóa bí mật mà cả người gửi và người nhận đều sử dụng có thể là một mật khẩu / mã cụ thể hoặc có thể là chuỗi ký tự hoặc số ngẫu nhiên đã được tạo bởi trình tạo số ngẫu nhiên an toàn (RNG). Đối với mã hóa cấp ngân hàng, các khóa đối xứng phải được tạo bằng RNG được chứng nhận theo tiêu chuẩn ngành, chẳng hạn như FIPS 140-2.
Có hai loại thuật toán Symmetrical encryption:
- Block algorithms: Tập hợp của các bit được mã hóa trong các khối dữ liệu điện tử với việc sử dụng một khóa bí mật. Khi dữ liệu đang được mã hóa, hệ thống giữ dữ liệu trong bộ nhớ đến khi các khối hoàn chỉnh.
- Stream algorithms: Dữ liệu được mã hóa khi truyền trực tuyến thay vì được giữ lại trong bộ nhớ của hệ thống.
Asymmetrical encryption
Asymmetrical encrytion còn được gọi là public-key cryptography, là một quá trình sử dụng một cặp khóa liên quan – một khóa công khai (public key) và một khóa riêng (private key) – để mã hóa và giải mã một tin nhắn và bảo vệ khỏi bị truy cập hoặc sử dụng trái phép. Khóa công khai là một khóa mật mã có thể được sử dụng bởi bất kỳ người nào để mã hóa một tin nhắn sao cho chỉ có thể được giải mã bởi người nhận dự kiến bằng khóa riêng của họ. Khóa riêng tư – còn được gọi là khóa bí mật – chỉ được chia sẻ với người khởi tạo khóa.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 28 Asymmetrical-encrytion](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/asymmetric_encryption.png)
Nhiều giao thức dựa trên Asymmetrical encrytion, bao gồm giao thức bảo mật lớp truyền tải (TLS) và giao thức lớp cổng bảo mật (SSL), giúp cho HTTPS khả thi. Quá trình mã hóa cũng được sử dụng trong các chương trình phần mềm – chẳng hạn như trình duyệt – cần thiết lập kết nối an toàn qua mạng không an toàn như Internet hoặc cần xác thực chữ ký số.
Tăng cường bảo mật dữ liệu là lợi ích chính của Asymmetrical encrytion. Đây là quy trình mã hóa an toàn nhất vì người dùng không bao giờ bị yêu cầu tiết lộ hoặc chia sẻ khóa riêng tư của họ, do đó giảm nguy cơ tội phạm mạng phát hiện ra khóa cá nhân của người dùng trong quá trình truyền.
Mã hóa Hashing
Trong khi encryption là một quy trình gồm hai bước được sử dụng để mã hóa và sau đó giải mã một tin nhắn, Hashing sẽ cô đọng một tin nhắn thành một giá trị có độ dài cố định không thể thay đổi được hay còn gọi là hàm băm. Hai trong số các thuật toán Hashing phổ biến nhất trong network là MD5 và SHA-1.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 29 Hashing](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/hashing.png)
Trong SSH, các giá trị Hash chủ yếu được sử dụng để kiểm tra tính toàn vẹn của dữ liệu (dữ liệu không bị sửa đổi một cách vô tình hay cố ý) và để xác minh tính xác thực của giao tiếp. Việc sử dụng chính của các giá trị Hash trong SSH là với HMAC (Hashed Message Authentication Code). HMAC sử dụng các giá trị Hash để tạo mã HMAC. Chúng được sử dụng để đảm bảo rằng văn bản tin nhắn nhận được là nguyên vẹn và không bị sửa đổi.
Cách thức xử lý các dạng mã hóa trong SSH
Giai đoạn Session Encryption Negotiation
Để thiết lập kết nối giữa Client và Server qua TCP, Server cần hiển thị Encryption Protocol và các phiên bản hỗ trợ. Nếu Client có Protocol tương thích, phiên bản cũng cần khớp. Trong trường hợp đồng thuận, một thỏa thuận được khởi tạo và Protocol được chấp nhận. Mỗi Server sử dụng Symmetric Public Key để xác thực. Nếu quá trình thiết lập thành công, cả hai bên sử dụng thuật toán chung Diffie-Hellman Key Exchange Algorithm. Thuật toán này tạo ra một Symmetrical Key để đồng bộ quá trình liên lạc sau này.
Dưới đây là tóm tắt quy trình hoạt động của thuật toán:
- Client và Server đồng ý với nguyên tắc sử dụng seed value.
- Cả hai bên cần được thông báo về cách thức mã hóa, triển khai bởi seed value thông qua thuật toán đặc biệt. Cơ chế tạo mã hóa này có ảnh hưởng lớn đến seed value.
- Cả hai bên tạo ra Private Key.
- Private Key này chung thuật toán với mã hóa AES để tạo ra Public Key, được phân phối đến máy còn lại.
- Cả hai bên có quyền sử dụng Private Key, trong khi Public Key của máy còn lại kết hợp với Public Key để tạo ra một Key chung.
- Khi đã có Shared Key, quá trình mã hóa Symmetric cho phiên SSH chính thức được khởi động.
Giai đoạn chứng thực người dùng
Đây là bước cuối cùng để người dùng có thể truy cập vào máy chủ và xác nhận thông tin trên hệ thống đăng nhập. Ban đầu, người dùng phải nhập tên đăng nhập, tiếp theo là mật khẩu. Thông tin người dùng cung cấp được chuyển đến hệ thống bảo mật Symmetric, đảm bảo không có bên thứ ba nào có thể thu thập được.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 30 ssh la gi 5](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-5.webp)
Mặc dù mật khẩu đã trải qua quá trình mã hóa; tuy nhiên, nếu người dùng không cẩn thận, vẫn có khả năng bị tiết lộ. Nếu một bên nào đó thành công trong việc thu thập mật khẩu, tài khoản của người dùng có thể bị chiếm đoạt. Theo nhiều chuyên gia bảo mật, người dùng nên sử dụng SSH Key Pair, một bộ khóa Asymmetric có khả năng xác thực thành viên mà không yêu cầu nhập mật khẩu.
Các bản phân phối của SSH
SSH đi kèm với hầu hết các bản phân phối Linux, Macintosh OS X, Sun Solaris, OpenBSD và hầu như tất cả các hệ điều hành lấy cảm hứng từ Unix khác. Microsoft Windows có rất nhiều client và server SSH, cả miễn phí và thương mại. Bạn thậm chí có thể tìm thấy SSH cho PalmOS, Commodore Amiga và hầu hết các nền tảng khác.
Nhiều client SSH được lấy từ các chương trình Unix cũ được gọi là r-commands r: Rv (remote shell), rlogin (đăng nhập từ xa) và RCp (sao chép từ xa). Trong thực tế, đối với nhiều mục đích, các client SSH là các thay thế cho r-commands, vì vậy nếu bạn vẫn đang sử dụng chúng, hãy chuyển sang SSH ngay lập tức! r-commands cũ không nổi tiếng là không an toàn.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 31 Các bản phân phối của SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/cac-ban-phan-phoi-ssh.png)
PuTTY là một triển khai mã nguồn mở của SSH, được viết với mục đích ban đầu là chỉ chạy trên Windows, nhưng hiện nay đã có mặt trên nhiều hệ điều hành khác như macOS hay Unix/BSD. PuTTY từ lâu đã là một trong những lựa chọn hàng đầu để triển khai SSH trên hệ thống Windows.
Hầu hết các triển khai của SSH đều bao gồm 3 tiện ích: slogin (secure login), ssh và scp (secure copy), đây là những phiên bản được cải tiến khả năng bảo mật so với những công cụ tiền nhiệm có trong Unix: rlogin, rsh và rcp. SSH sử dụng mật mã public key để xác thực máy tính từ xa, và cho phép máy tính từ xa xác thực người dùng nếu cần thiết.
So sánh giao thức SSH với Telnet và SSL/TLS
SSH và Telnet
Telnet là một trong những giao thức ứng dụng Internet lâu đời nhất, cùng với FTP. Telnet được sử dụng để khởi tạo và duy trì các phiên giả lập terminal trên một host ở xa. SSH và Telnet có những sự tương đồng nhất định về mặt chức năng, tuy nhiên điểm khác biệt lớn nhất là SSH sử dụng mật mã public key để xác thực terminal session, đồng thời mã hóa các lệnh và đầu ra của phiên.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 32 SSH và Telnet](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-6.webp)
Mặt khác, Telnet chủ yếu dùng cho giả lập terminal, còn SSH thì dùng để giả lập terminal – tương tự như rlogin command – cũng như để gửi các lệnh từ xa bằng rsh, truyền file bằng SFTP và tunnel nhiều ứng dụng khác.
SSH | Telnet |
Chạy trên port 22 | Chạy trên port 23 |
Giao thức rất an toàn | Giao thức không an toàn |
Mã hóa bằng Public Key | Truyền bằng văn bản thuần túy |
Phù hợp với Public Network | Phù hợp với Private Network |
Tất cả hệ điều hành | Linux/Windows |
SSH và SSL/TLS
Giao thức TLS (Transport Layer Security) cập nhật giao thức SSL để cung cấp bảo mật cho việc truyền mạng ở lớp truyền dẫn (transport layer). Giao thức SSH cũng hoạt động ở trong hoặc trên transport layer, nhưng hai giao thức này không hoàn toàn giống nhau. Dù cả hai giao thức đều dựa vào các public/private key pair để xác thực host, nhưng theo TLS, chỉ server mới được xác thực bằng key pair.
Còn SSH dùng một key pair riêng biệt để xác thực từng kết nối: một key pair cho kết nối từ máy cục bộ đến máy ở xa và key pair còn lại sẽ xác thực ngược lại. Ngoài ra, TLS cho phép mã hóa các kết nối mà không cần xác thực, hoặc được xác thực mà không cần mã hóa; còn SSH sẽ mã hóa và xác thực mọi kết nối.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 33 so sánh SSH và TLS/SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/SSH-va-SSL.webp)
Bên cạnh đó, SSH cũng cung cấp cho các chuyên gia IT và infosec một cơ chế an toàn để quản lý SSH client từ xa. Thay vì yêu cầu xác thực password để khởi tạo kết nối giữa client và server, SSH tự xác thực kết nối giữa các thiết bị. Do đó, các nhân viên IT có thể kết nối với hệ thống từ xa và sửa đổi cấu hình SSH, chẳng hạn như thêm hoặc xóa các key pair của host trong file known_hosts.
Cách sử dụng SSH để kết nối với Server Linux
Thiết lập Server Linux chấp nhận liên kết
Để thiết lập kết nối SSH cho Server Linux, trước hết, bạn cần thực hiện các bước cấu hình trên máy chủ. Tùy thuộc vào phần cứng và phiên bản Linux, bạn có thể tùy chỉnh cài đặt. Sau khi tải công cụ về thành công, bạn có thể mở Terminal bằng cách nhấn tổ hợp phím Ctrl + Alt + T và nhập lệnh “sudo apt-get update“.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 34 Thiết lập server Linux](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-7.webp)
Trước khi bắt đầu quá trình cài đặt OpenSSH, bạn cần kiểm tra chương trình nâng cấp bằng cách nhập lệnh “sudo apt-get upgrade” trong Terminal. Nếu quá trình nâng cấp đã hoàn tất, bạn có thể tiếp tục nhập lệnh “sudo apt-get install openssh-server“.
Định hình cấu hình cài đặt SSH cho Server
Sau khi hoàn tất bước thiết lập chấp nhận kết nối, tiếp theo là quá trình chỉnh sửa cấu hình cơ bản. Để thực hiện điều này, bạn có thể mở Terminal, mở file cấu hình SSH và sử dụng lệnh “sudo nano /etc/ssh/sshd_config”. Theo cài đặt mặc định, SSH Server thường hoạt động trên cổng 22. Bạn cũng có thể tăng cường bảo mật bằng cách thiết lập mật khẩu phức tạp.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 35 Cấu hình cài đặt SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2024/02/ssh-la-gi-8.webp)
Trong mục Port, bạn có thể tìm đến dòng MaxAuthTries và nhập giá trị mong muốn. Chẳng hạn, nếu bạn muốn giới hạn việc đăng nhập tối đa 4 lần, bạn chỉ cần nhập “MaxAuthTries 4”. Khi bạn đã cài đặt xong công cụ OpenSSH, giao thức SSH Server sẽ bắt đầu chạy. Để kiểm tra xem giao thức đã chạy hay chưa, bạn có thể sử dụng lệnh “sudo service ssh status”. Nếu bạn không muốn chạy SSH, bạn có thể nhập lệnh “sudo service ssh stop”.
Một số câu lệnh SSH
SSH có một số triển khai từ command line hoặc thực thi ở trong script. Nếu chạy một lệnh SSH mà không có các đối số (như host đích hay user ID) sẽ trả về một danh sách các tham số của lệnh SSH cùng với các option. Dạng cơ bản nhất của lệnh SSH là gọi chương trình và tên của host đích hay địa chỉ IP:
ssh server.example.org
Lệnh này sẽ kết nối với đích server.example.org; sau đó host đích sẽ phản hồi bằng yêu cầu nhập password cho user ID mà client đang chạy. Đôi khi, user ID cho host từ xa sẽ khác, nên lệnh cần phải được gửi bằng user ID của host từ xa như sau:
ssh remote_host_userID@server.example.org
Ngoài ra, SSH cũng có thể được sử dụng từ trong command line để gửi ra một lệnh trên host từ xa rồi thoát:
ssh example.org ls
Lệnh này sẽ thực hiện lệnh ls trong Unix, liệt kê tất cả nội dung của thư mục hiện tại trên host từ xa. Qua đó ta có thể thấy SSH có thể được dùng để thực hiện nhiều lệnh khác nhau trên một host từ xa. Chẳng hạn như lệnh khởi tạo một server instance, cho phép máy từ xa truy cập vào một file hay tài nguyên nào đó, sau đó terminate server sau khi truy cập vào file.
Bên cạnh ssh executable thì SSH còn có một số lệnh khác có thể dùng trong command line để thực hiện một số chức năng bổ sung như:
- sshd khởi tạo SSH server để đợi request kết nối SSH đến và enable các hệ thống được ủy quyền để kết nối đến local host.
- ssh-keygen là một chương trình tạo các key pair xác thực mới cho SSH dùng để tự động hóa các đăng nhập, triển khai SSO hay xác thực host.
- ssh-copy-id là chương trình dùng để copy, cài đặt và cấu hình SSH key trên một server để tự động hóa các đăng nhập không password và SSO.
- ssh-agent là một chương trình trợ giúp, theo dõi các key nhận dạng và passphrases của chúng, từ đó SSH có thể lấy mã khóa mã hóa và cho phép người dùng sử dụng các key nhận dạng (identity key) khác nhau mà không cần nhập loại password hay passphrase.
- ssh-add được sử dụng để thêm key vào các SSH authentication agent, được dùng với ssh-agent để triển khai SSO bằng SSH.
- scp là một chương trình sao chép file giữa các máy tính và là một phiên bản an toàn hơn của rcp.
- sftp cũng là một chương trình cho phép sao chép file giữa các máy tính, là một phiên bản an toàn hơn của ftp. SFTP đang ngày càng trở thành cơ chế được yêu thích để chia sẻ file qua internet, thay thế cả FTP lẫn FTP/S – giao thức sử dụng FTP qua một SSL/TLS tunnel.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 36 Một số câu lệnh SSH](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/ssh-la-gi-1-1.webp)
SSH Tunneling
Ngoài ra, SSH tunneling hay còn được gọi là SSH port fowarding (chuyển tiếp cổng SSH), là một kỹ thuật cho phép người dùng mở một tunnel an toàn giữa local host và remote host. SSH tunneling cho phép chuyển hướng lưu lượng mạng đến một cổng/địa chỉ IP khác để các ứng dụng trên local host có thể truy cập trực tiếp đến các remote host. Đích đến có thể nằm trên remote host SSH hay bất kỳ remote host nào khác.
SSH tunnel là một công cụ mạnh mẽ cho các admin IT, tuy nhiên những kẻ tấn công cũng có thể lợi dụng SSH tunnel để chuyển firewall mà không bị phát hiện. Vì vậy, các doanh nghiệp cần sử dụng những công cụ cho phép ngăn chặn các SSH tunnel trái phép thông qua firewall.
![SSH là gì? Tìm hiểu về Secure Shell Protocol từ A-Z 37 SSH-tunneling](https://static-xf1.vietnix.vn/wp-content/uploads/2021/08/ssh-tunneling.webp)
Câu hỏi thường gặp
SSH Key là gì?
SSH Key là một cặp mã hóa bao gồm một khóa riêng tư (Private Key) và một khóa công khai (Public Key) được sử dụng trong giao thức SSH (Secure Shell) để xác thực và bảo mật quá trình truyền tải dữ liệu và đăng nhập từ xa vào các máy chủ.
OpenSSH là gì?
OpenSSH là một bộ công cụ mã nguồn mở cung cấp các tiện ích mạng liên quan đến bảo mật máy tính dựa trên giao thức SSH (Secure Shell), giúp bảo mật thông tin liên lạc mạng qua sự mã hóa giao thông mạng bằng các phương thức mã hóa đa dạng và cung cấp các khả năng đường hầm bảo mật.
Ưu điểm của việc kết nối đến tài khoản GitHub qua SSH là gì?
Ưu điểm của việc kết nối đến tài khoản GitHub qua SSH:
Bảo mật:
– SSH mã hóa tất cả dữ liệu được truyền giữa máy tính của bạn và GitHub, giúp bảo vệ thông tin đăng nhập và mã nguồn của bạn khỏi bị đánh cắp.
– Việc sử dụng SSH key giúp tăng cường bảo mật hơn so với sử dụng mật khẩu, vì key khó đoán và có thể được bảo vệ bằng passphrase.
Hiệu quả:
– SSH có thể nhanh hơn HTTPS khi thực hiện các thao tác như clone repository và push code.
– SSH sử dụng ít tài nguyên hệ thống hơn HTTPS, giúp bạn tiết kiệm pin và CPU.
Tiện lợi:
– SSH cho phép bạn thực hiện các thao tác quản lý repository trực tiếp từ dòng lệnh, giúp bạn làm việc hiệu quả hơn.
– Bạn có thể sử dụng SSH để tự động hóa các tác vụ, ví dụ như deploy code.
Linh hoạt:
– SSH có thể được sử dụng để kết nối với các dịch vụ khác ngoài GitHub, ví dụ như Bitbucket và GitLab.
Khả năng tương thích:
– SSH được hỗ trợ bởi hầu hết các hệ điều hành và trình terminal.
Các nhà cung cấp dịch vụ máy chủ tại Việt Nam có hỗ trợ SSH không? Và họ thường sử dụng các công cụ quản lý SSH nào?
Các nhà cung cấp dịch vụ máy chủ thường cung cấp SSH như một tính năng mặc định trong các gói dịch vụ của họ, giúp người dùng dễ dàng truy cập và quản lý máy chủ của họ bằng SSH client trên máy tính cá nhân hoặc thiết bị di động.
Các công cụ quản lý SSH phổ biến như: Webmin, Putty, MobaXterm,…
SSH có thể được tích hợp với các phần mềm quản trị hệ thống nào để gia tăng hiệu quả làm việc?
Để nâng cao hiệu quả công việc, SSH có thể được tích hợp với các phần mềm quản trị hệ thống, mang lại nhiều lợi ích như: Tự động hóa các tác vụ quản trị, quản lý tập trung nhiều máy chủ, nâng cao khả năng bảo mật, cải thiện khả năng cộng tác,…
Liệu các phương pháp mã hóa của SSH có dễ bị tấn công không?
Nhìn chung, các phương pháp mã hóa của SSH được đánh giá là rất an toàn và khó bị tấn công. Tuy nhiên, không có hệ thống bảo mật nào là hoàn toàn bất khả xâm phạm. Dưới đây là một số rủi ro tiềm ẩn liên quan đến mã hóa SSH:
– Lỗ hổng phần mềm.
– Tấn công vũ lực điển hình là dò mật khẩu.
– Tấn công trung gian (Man-in-the-middle attack).
Lời kết
Hy vọng bài viết trên giúp bạn có thêm nhiều thông tin về SSH, cũng như ứng dụng giao thức này một cách hiệu quả. Nếu có bất kỳ thắc mắc nào hãy để lại bình luận ngay bên dưới, tôi sẽ giúp bạn giải đáp nhanh nhất. Chúc bạn thành công!