Giao thức SSH là gì? Hướng dẫn sử dụng SSH từng bước
Bài viết được sự cho phép của tác giả Phạm Văn Hải
Trong một ngày đẹp trời, mình được sếp giao nhiệm vụ “tối quan trọng” đó là quản trị hệ thống server của công ty. Nhưng mình đâu có biết quản trị server là thế nào đâu? Đến chuyện làm sao kết nối tới server còn chưa biết? Giao thức SSH là gì đâu?
Trong lúc khó khăn thường sẽ sản sinh “anh hùng”, và mình bắt đầu học cách quản trị server. Bước đầu tiên đó là tìm hiểu cách kết nối tới server bằng SSH.
Vậy giao thức SSH là gì? Nó có phải thứ chỉ dành chuyên gia không? Bài viết này mình sẽ chia sẻ những kiến thức mình học được trong quá trình tìm hiểu về SSH.
#SSH là gì?
Secure Shell (hay còn gọi là SSH) là một giao thức mạng cho phép người dùng thực hiện kết nối giữa máy chủ và máy khách một cách an toàn và bảo mật. SSH keys cung cấp một cách an toàn hơn để đăng nhập vào máy chủ bằng SSH so với chỉ sử dụng mật khẩu.
Mật khẩu cũng có thể bị lộ hoặc bị đánh cắp bằng ‘Brute Force attach’, SSH key gần như không thể giải mã bởi ‘Brute Force’.
Lý do để giao thức SSH bảo mật hơn, đó chính là sử dụng một cặp key: Public key và Private key.
Bạn có thể đặt ‘Public Key’ trên bất kỳ máy chủ nào, sau đó mở khóa bằng cách kết nối với Client đã có ‘Private Key’. Khi hai khóa khớp với nhau, hệ thống sẽ tự động kết nối mà không cần mật khẩu. Bạn có thể tăng cường bảo mật hơn nữa bằng cách bảo vệ ‘Private Key’ bằng mật khẩu.
#Cách thức hoạt động SSH
Đọc qua khái niệm SSH, có lẽ bạn vẫn còn hơi mơ hồ về giao thức bảo mật này đúng không? Để hiểu được, bạn cần phải biết cách thức hoạt động của nó.
Với các bạn sử dụng Linux hay MacOs thì việc sử dụng SSH sẽ dễ hơn rất nhiều so với Window.
Trên Linux thì một câu lệnh SSH sẽ gồm 3 phần: ssh {user}@{host}
Trong đó:
- ssh : đây là câu lệnh để hệ thống biết được bạn muốn tạo một kết nối bảo mật Secure Shell Connection.
- {user}: là tài khoản mà bạn muốn dùng để truy cập. Ví dụ: tài khoản root
- {host}: Là địa chỉ máy tính bạn muốn kết nối tới. Nó có thể là một địa chỉ IP hoặc một domain.
Khi bạn enter câu lệnh trên, máy tính sẽ yêu cầu bạn nhập mật khẩu tương ứng với tài khoản truy cập trong câu lệnh. Nếu nhập đúng là bạn đã kết nối thành công.
#Khi nào thì sử dụng SSH
Như mình đã nói ở trên SSH là gì, SSH có ưu điểm vượt trội về mặt bảo mật so với hình thức kết nối sử dụng mật khẩu truyền thống.
Vì vậy, lý do đầu tiên đó chính là tính bảo mật. Đảm bảo việc kết nối tới server được an toàn, không bị hacker lấy trộm thông tin, cũng như khỏi sợ việc bị hack mật khẩu, bị cài keylogger để trộm mật khẩu.
Ngoài ra, vì kết nối không cần nhập mật khẩu nên sẽ vô cùng tiện lợi. Bạn sẽ chỉ cần phải thiết lập một lần và sau đó quên nó đi, việc kết nối tới server là vô cùng đơn giản và nhanh chóng.
Về cá nhân mình, Mình làm việc trên MacOS nên việc ssh vào server rất nhiều nên việc mỗi lần login theo cách bằng mật khẩu truyền thống, nó rất nguy hiểm nếu như máy tính bạn có mã độc hoặc vô tình làm lộ mật khẩu
Ngoài ra mình thường xuyên setup Cron Job để copy file từ server này sang server kia hoặc từ server về local. Nên việc sử dụng ssh no password là rất rất cần thiết.
Do đó mình khuyên là hãy thực hành làm cho quen và sử dụng SSH ngay.
Xem thêm các việc làm Linux lương cao trên TopDev
#Hướng dẫn kết nối server sử dụng SSH
Như mình đã nói ở trên, để kết nối sử dụng giao thức SSH, bạn cần phải có private key trên máy tính local của mình và public key trên server.
1. Tạo SSH Keys
Mình sẽ hướng dẫn các bạn từng bước tạo 2 keys này trên cả Linux và Window. Sau đó sử dụng 2 key này để có thể kết nối máy tính tới server qua giao thức SSH.
1.1 Đối với Linux và macOS
Khi tạo khóa SSH trong Linux, bạn có thể sử dụng lệnh ssh-keygen được tích hợp sẵn. Để làm đươc như vậy, hãy thực hiện theo những bước sau:
Mở Terminal. Nhập lệnh sau:
ssh-keygen -t rsa -b 4096
Tiếp theo, bạn chọn nơi để lưu Private key.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Public key sẽ được lưu trong cùng một vị trí, dưới cùng tên tệp, nhưng có phần mở rộng .pub. Nếu bạn không nhập gì thì sẽ sử dụng thư mục mặc định /home/username/.ssh/id_rsa
.
Cuối cùng, bạn sẽ phải nhập mật khẩu. Đây sẽ là mật khẩu cần thiết để tải Private key và sử dụng nó để kết nối qua SSH sau này:
Enter passphrase (empty for no passphrase):
Toàn bộ quá trình tạo cặp khóa sẽ như thế này:
[email protected]: ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: 15:8e:e9:f2:1d:c9:b1:ca:41:8a:c3:3b:a1:1d:92:92 [email protected]
Như vậy là bạn đã tạo được cả 2 keys:
- Một Private key được ghi vào
/home/{username}/.ssh/id_rsa
. - Một Public key được ghi vào
/home/{username
}
/.ssh/id_rsa.pub
Trong đó {username}
tên đăng nhập của máy tính của bạn.
1.2. Đối với Windows
Để tạo SSH key, mình khuyên các bạn sử dụng phần mềm PuTTY. Sau này, dùng luôn phần mềm này để kết nối bằng SSH tới server.
Với PuTTY, các bước thực hiện như sau:
- Tải và khởi động puttygen.exe.
- Trong phần “Parameters”, chọn SSH2 DSA và nhấn Generate.
- Di chuyển chuột của bạn trong màn hình nhỏ để tạo các khóa.
- Nhập một comment
- Nhập mật khẩu và xác nhận nó. Cụm mật khẩu được sử dụng để bảo vệ khóa của bạn.
- Bạn sẽ được yêu cầu khi bạn kết nối qua SSH.
- Nhấp vào “Save private key” để lưu Private Key của bạn.
- Nhấp vào “Save Public key” để lưu Public Key của bạn.
Như vậy là bạn đã tạo xong cả 2 loại key. Việc tiếp theo là thêm public key lên server.
Với ZOC7, bạn làm như sau:
2. Thêm Public Key vào server.
2. 1 Cài đặt SSH trên server
Mặc định thì Linux không có SSH, bạn cần phải cài đặt SSH thì mới sử dụng được.
Ví dụ bạn tự thuê riêng một server, bạn phải tự cài đặt hệ điều hành từ đầu thì sẽ phải cài thêm SSH. Còn với trường hợp VPS thì các nhà cung cấp thường cài đặt sẵn cho bạn SSH rồi.
Đối với RHEL/CentOS
yum -y install openssh-server openssh-clients chkconfig sshd on service sshd start
Đối với Ubuntu/Debian
sudo apt install openssh-client sudo apt install openssh-server
2.2 Thêm Public key lên server
Để thêm SSH Public key của bạn vào máy chủ, bạn sẽ sao chép SSH Public key mà bạn vừa tạo vào máy chủ.
$ cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'
Sau đó, máy chủ sẽ nhắc bạn nhập mật khẩu của bạn:
[email protected]'s password:
Bây giờ bạn sẽ được thiết lập để kết nối với máy chủ mà không cần phải xác thực mật khẩu
3. Đăng nhập vào Server sử dụng SSH key
Để kết nối đến một server sử dụng giao thức SSH, bạn có thể thực hiện trên Window, Linux, hoặc MacOS. Trên Linux thì Terminal đã hỗ trợ sắn tính năng kết nối SSH rồi, bạn có thể sử dụng luôn. Còn với Window thì cần phải cài thêm một phần mềm bên thứ 3.
Ví dụ, với Window thì có nhiều phần mềm giúp bạn kết nối SSH như PuTTY, ZOC7… Cá nhân mình thì hay sử dụng ZOC7 vì giao diện đơn giản, thân thiện.
Những thông tin để đăng nhập một máy chủ qua SSH sẽ gồm:
- IP của Server. Ví dụ: 104.31.76.95
- Tên đăng nhập, đa phần là root
- Mật khẩu đăng nhập
- Cổng kết nối: 22. Mặc định SSH sử dụng cổng 22
Ví dụ, sử dụng phần mềm ZOC7, bạn cần điền thông tin cần thiết khi khởi động ứng dụng như sau:
Vậy là xong rồi đấy, từ nay về sau việc kết nối tới server sẽ đơn giản hơn rất nhiều.
#Tạm kết
Như vậy, qua bài viết này các bạn đã hiểu được SSH là gì, cách thức hoạt động, ưu điểm nổi bật của giao thức SSH…
Qua đó, mình khuyên các bạn cũng nên dần bỏ cách thức đăng nhập bằng mật khẩu truyền thống để tăng cường bảo mật cho server.
Bài viết gốc được đăng tải tại vntalking.com
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS