aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa kết nối SSH an toàn giữa máy lập trình viên và server

SSH là gì? Hướng dẫn cơ bản cho lập trình viên

admin by admin
01/07/2026
in Hướng dẫn
0
586
SHARES
3.3k
VIEWS
Summarize with ChatGPTShare to Facebook

SSH là một trong những kỹ năng nền tảng mà lập trình viên, backend engineer hay DevOps engineer đều nên nắm chắc. Chỉ với vài lệnh cơ bản, bạn có thể đăng nhập server, deploy ứng dụng, xem log, copy file và xử lý sự cố từ xa một cách an toàn.

SSH là gì?

SSH, viết tắt của Secure Shell, là giao thức dùng để kết nối tới máy chủ từ xa qua một kênh đã được mã hóa. Thay vì gửi username và password qua mạng theo cách dễ bị nghe lén, SSH giúp bảo vệ phiên làm việc giữa máy của bạn và server.

Trong thực tế, SSH thường được dùng để quản trị VPS, chạy lệnh trên Linux server, cấu hình CI/CD, kết nối Git server hoặc tạo đường hầm an toàn tới một dịch vụ nội bộ.

Kết nối SSH bằng password

Cú pháp đơn giản nhất là:

ssh username@server_ip

Ví dụ:

ssh -l deploy 192.168.1.10

Nếu server dùng port khác port mặc định 22, thêm tham số -p:

ssh -l deploy -p 2222 192.168.1.10

Nên dùng SSH key thay vì password

Đăng nhập bằng password tiện nhưng không phải lựa chọn tốt nhất cho server production. Cách phổ biến hơn là dùng SSH key: máy local giữ private key, server lưu public key. Khi đăng nhập, hai bên xác thực với nhau mà không cần gửi password qua mạng.

Tạo SSH key mới:

ssh-keygen -t ed25519 -C "aedev-ssh-key"

Sau đó copy public key lên server:

ssh-copy-id -o User=deploy 192.168.1.10

Nếu máy bạn không có ssh-copy-id, có thể copy nội dung file ~/.ssh/id_ed25519.pub vào file ~/.ssh/authorized_keys trên server.

Tạo alias để kết nối nhanh hơn

Khi phải làm việc với nhiều server, bạn nên cấu hình file ~/.ssh/config để không phải nhớ IP, port và username mỗi lần kết nối.

Host staging-api
    HostName 192.168.1.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Từ đó, bạn chỉ cần chạy:

ssh staging-api

Copy file qua SSH với scp

SSH thường đi kèm các công cụ hữu ích như scp hoặc rsync. Ví dụ copy file build lên server:

scp ./app.tar.gz staging-api:/var/www/releases/

Với thư mục lớn hoặc deploy lặp lại nhiều lần, rsync thường hiệu quả hơn vì chỉ đồng bộ phần thay đổi.

Một vài thiết lập bảo mật nên có

  • Tạo user deploy riêng, hạn chế đăng nhập bằng user root.
  • Dùng SSH key, tránh phụ thuộc vào password.
  • Tắt password login sau khi đã kiểm tra key hoạt động ổn.
  • Chỉ mở port SSH cần thiết trong firewall.
  • Không commit private key vào Git repository.

Một cấu hình server thường thấy trong file /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Sau khi chỉnh cấu hình, reload SSH service:

sudo systemctl reload ssh

Lỗi thường gặp

Permission denied publickey thường xảy ra khi public key chưa được thêm vào server, sai user, sai quyền file trong thư mục ~/.ssh, hoặc client đang dùng nhầm private key.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Connection timed out thường liên quan tới firewall, security group cloud provider, sai IP hoặc port SSH chưa mở.

Kết luận

SSH không chỉ là một lệnh để vào server. Nó là nền tảng cho rất nhiều workflow trong phát triển phần mềm: deploy, debug, automation, CI/CD và vận hành hệ thống. Nếu mới bắt đầu, hãy tập dùng SSH key, cấu hình alias trong ~/.ssh/config và hiểu rõ các lỗi phổ biến trước khi thao tác trên production.

SummarizeShare234
admin

admin

Related Stories

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git blame -L để lần về commit của một đoạn ngắn

by Suong Nguyen
13/11/2026
0

Chọn mốc và phạm vi dòng để tra commit liên quan khi review.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git branch –merged: đọc danh sách theo đúng nhánh đích sau squash

by Suong Nguyen
12/11/2026
0

Xem tip của nhánh nào đã nằm trong lịch sử nhánh đích và hiểu vì sao squash không cho kết quả giống merge.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git word-diff: đọc thay đổi từng từ trong một dòng tài liệu dài

by Suong Nguyen
11/11/2026
0

Tạo repository thử để so unified diff và word-diff, nhận biết giới hạn dấu phân cách và chọn đúng phạm vi so sánh.

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git log –follow: đọc tiếp lịch sử của một file sau khi đổi tên

by Suong Nguyen
10/11/2026
0

Dựng ba commit để so sánh log theo đường dẫn hiện tại với log --follow và tìm lại phần lịch sử trước lần đổi tên file.

Next Post
Minh họa dùng SSH key để kết nối GitHub an toàn

Hướng dẫn dùng SSH với GitHub cho lập trình viên

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Alert trên Android và hai đường hủy hộp thoại
  • Map.set có đưa khóa đã tồn tại xuống cuối không?
  • Android postInvalidate khi custom View cần lên lịch vẽ lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply