Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn thiết lập SSH Passwordless Login trên Linux chi tiết

    Nguyễn Hưng

    Ngày đăng:

    11/03/2026

    Cập nhật lần cuối:

    11/03/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    11/03/2026

    Cập nhật lần cuối:

    11/03/2026

    Mục lục

    SSH Passwordless Login là cơ chế đăng nhập SSH không cần nhập mật khẩu, thay vào đó dùng cặp khóa mã hóa để xác thực người dùng với máy chủ từ xa. Trong bài viết này, mình sẽ hướng dẫn bạn các thiết lập SSH Passwordless Login chi tiết từng bước trên Linux.

    Những điểm chính

    • Định nghĩa SSH Passwordless Login: Hiểu rõ khái niệm và cơ chế hoạt động của việc đăng nhập SSH không cần mật khẩu.
    • Lợi ích khi thiết lập: Nắm được các lợi ích vượt trội về bảo mật, sự tiện lợi và khả năng tự động hóa so với phương pháp dùng mật khẩu.
    • Quy trình thiết lập: Thành thạo quy trình các bước để tạo SSH Key, cập nhật lên máy chủ và vô hiệu hóa xác thực bằng mật khẩu một cách an toàn.
    • Lưu ý khi thiết lập: Nắm được các lưu ý quan trọng để đảm bảo quá trình thiết lập thành công, từ việc đặt đúng quyền truy cập đến bảo mật private key.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như nên chọn loại SSH key nào, có nên đặt passphrase và cách quản lý nhiều key trong môi trường lớn.

    SSH Passwordless Login là gì?

    SSH Passwordless Login (hay đăng nhập SSH không cần mật khẩu) là phương thức xác thực nâng cao, cho phép quản trị viên truy cập vào máy chủ từ xa thông qua cơ chế cặp khóa mã hóa (Public/Private Key Pair) thay vì sử dụng mật khẩu truyền thống. Cơ chế hoạt động của phương pháp như sau:

    1. Tạo cặp khóa: Tạo một private key (khóa riêng) được lưu trên máy local và một public key (khóa công khai) được đặt trên server​
    2. Lưu public key trên server: Public key được thêm vào file ~/.ssh/authorized_keys trên máy chủ từ xa​
    3. Xác thực: Khi đăng nhập, SSH client sử dụng private key để tạo chữ ký số, sau đó server xác minh chữ ký này bằng public key. Nếu khớp, bạn được cấp quyền truy cập mà không cần mật khẩu​
    SSH Passwordless Login là phương pháp đăng nhập SSH không cần mật khẩu
    SSH Passwordless Login là phương pháp đăng nhập SSH không cần mật khẩu

    Lợi ích khi thiết lập SSH Passwordless Login

    Việc sử dụng SSH Key thay cho mật khẩu mang lại nhiều lợi ích cho quản trị viên hệ thống:

    • Bảo mật vượt trội: Phương pháp này giúp chống lại các cuộc tấn công Brute-force bằng cách sử dụng các thuật toán mã hóa mạnh như RSA, ECDSA hoặc ED25519. 
    • Tiện lợi và dễ sử dụng: Bạn không cần nhập mật khẩu mỗi lần đăng nhập, chỉ cần chạy lệnh ssh user@server. Cách này giúp bạn đăng nhập nhanh và tiết kiệm thời gian so với phương pháp xác thực mật khẩu truyền thống.
    • Tự động hóa và tích hợp DevOps: Đây là nền tảng để chạy các script tự động hóa như Ansible, Jenkins, Bash script,… giữa các server, giúp tiết kiệm thời gian đáng kể bằng cách loại bỏ nhu cầu gõ lệnh SSH thủ công, giảm lỗi con người, đảm bảo kết quả đáng tin cậy và nhất quán. 
    • Quản lý truy cập và kiểm toán: Bạn có thể dễ dàng quản lý SSH keys cho tự động hóa, giảm nhu cầu chia sẻ hoặc hard-code mật khẩu trong script. Mỗi user có SSH key riêng và có thể quản lý public keys trên server để kiểm soát quyền truy cập. 
    Lợi ích khi thiết lập SSH Passwordless Login
    Lợi ích khi thiết lập SSH Passwordless Login

    Bước 1: Khởi tạo SSH Key trên máy cá nhân

    Tại máy Local, bạn mở cửa sổ dòng lệnh và thực hiện tạo SSH Key bằng lệnh sau:

    ssh-keygen -t rsa

    Chú thích:

    • ssh-keygen: Công cụ quản lý khóa SSH.
    • -t rsa: Chỉ định loại thuật toán mã hóa là RSA.

    Hệ thống sẽ hỏi nơi lưu file và mật khẩu bảo vệ khóa (passphrase). Bạn có thể nhấn Enter liên tục để chọn thiết lập mặc định (không đặt mật khẩu cho khóa). Kết quả hiển thị như sau:

    Khởi tạo SSH Key
    Khởi tạo SSH Key

    Bước 2: Sao chép Public Key lên máy chủ

    Sau đó, bạn thực hiện cập nhật public key vừa tạo vào máy remote bằng lệnh sau:

    ssh-copy-id user@host 

    Trong đó:

    1. ssh-copy-id : Dòng lệnh được sử dụng để sao chép public key và máy muốn SSH bằng key. 
    2. user: Tên người dùng bạn muốn SSH
    3. Host: Địa chỉ IP hoặc domain của máy bạn muốn SSH.

    Nếu bạn sử dụng Windows hoặc lệnh trên không hoạt động, bạn hãy dùng câu lệnh sau để chép nội dung Public Key vào file authorized_keys trên máy chủ:

    cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

    Bước 3: Thiết lập phân quyền

    Để đảm bảo SSH hoạt động, bạn cần thiết lập quyền chính xác cho thư mục .ssh trên máy chủ. Bạn chạy lệnh sau từ máy Local:

    ssh-copy-id user@host "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

    Chú thích:

    • chmod 700 ~/.ssh: Chỉ chủ sở hữu có quyền đọc/ghi/thực thi thư mục cấu hình.
    • chmod 600 …/authorized_keys: Chỉ chủ sở hữu có quyền đọc/ghi file chứa key.

    Bước 4: Vô hiệu hóa xác thực bằng mật khẩu

    Sau khi đã đăng nhập được bằng Key, bạn nên tắt tính năng đăng nhập bằng mật khẩu để ngăn chặn hacker tấn công brute-force.

    Bạn mở file cấu hình SSH trên máy chủ bằng lệnh sau:

    sudo vi /etc/ssh/sshd_config

    Sau đó bạn tìm và sửa hoặc bỏ dấu # nếu bị comment các dòng sau để khớp với cấu hình:

    # Cho phép đăng nhập bằng Key
    PubkeyAuthentication yes
    
    # Tắt đăng nhập bằng Mật khẩu
    PasswordAuthentication no

    Bước 5: Kiểm tra kết nối không cần mật khẩu

    Để áp dụng cấu hình mới, bạn cần restart service sshd trên máy chủ:

    sudo systemctl restart sshd

    Từ máy Local, bạn hãy thử kết nối lại. Nếu thành công, bạn sẽ truy cập thẳng vào server mà không cần nhập mật khẩu.

    ssh user@host
    Kiểm tra kết nối của bạn
    Kiểm tra kết nối của bạn

    Lưu ý khi thiết lập SSH Passwordless Login trên Linux

    Để đảm bảo an toàn tuyệt đối và tránh lỗi trong quá trình sử dụng, bạn cần chú ý các điểm sau:

    • Kiểm tra và đặt đúng quyền truy cập thư mục: Thư mục ~/.ssh thường yêu cầu quyền 700, do đó bạn hãy sử dụng lệnh chmod 700 ~/.ssh
    • Đặt quyền đúng cho file authorized_keys: File ~/.ssh/authorized_keys cần có quyền 600, do đó bạn hãy sử dụng lệnh chmod 600 ~/.ssh/authorized_keys.​
    • Đặt quyền đúng cho private key: Private key phải có quyền 400 hoặc 600, nếu quyền quá mở, SSH sẽ từ chối kết nối với thông báo “permissions are too open“​.
    • Không chia sẻ private key: Private key phải được giữ bí mật trên máy local của bạn và chỉ public key được gửi đến server​.
    • Tạo SSH directory nếu chưa tồn tại: Trước khi dán public key vào authorized_keys, bạn hãy đảm bảo thư mục ~/.ssh đã tồn tại trên server.
    • Bảo mật SSH server config: Bạn cần đảm bảo rằng các thiết lập bảo mật khác trong /etc/ssh/sshd_config đang bật, như PubkeyAuthentication yes, PermitRootLogin prohibit-password để ngăn root login trực tiếp​.
    • Sử dụng tên key có ý nghĩa: Khi tạo SSH keys, hãy đặt tên có ý nghĩa để dễ dàng quản lý nhiều keys cho nhiều server khác nhau​.
    • Cấp quyền truy cập hạn chế cho script tự động hóa: Nếu bạn sử dụng SSH keys cho script tự động hóa, hãy tạo một user riêng với quyền hạn chế và dùng key chỉ cho user đó​.
    Những lưu ý khi thiết lập SSH Passwordless Login trên Linux
    Những lưu ý khi thiết lập SSH Passwordless Login trên Linux (Nguồn: Internet)

    Câu hỏi thường gặp

    Nên chọn loại SSH key nào cho môi trường Linux hiện đại?

    Trong đa số hệ thống hiện đại, ED25519 thường được khuyến nghị vì bảo mật tốt, key ngắn, hiệu năng cao và dễ quản lý hơn so với RSA dung lượng lớn. Tuy nhiên, RSA vẫn phổ biến do khả năng tương thích rộng, nhưng nên dùng tối thiểu 2048–3072 bit, trong khi ED25519 phù hợp với chuẩn trong giai đoạn hiện nay.

    Có nên đặt passphrase cho private key khi dùng SSH Passwordless Login không?

    Đặt passphrase là cách thêm một lớp bảo vệ, giúp giảm rủi ro nếu private key bị đánh cắp vì kẻ tấn công vẫn phải vượt qua passphrase mới sử dụng được key. Tuy nhiên, với các kịch bản tự động hóa, nhiều bên chấp nhận dùng key không passphrase kết hợp giới hạn quyền user, IP, time hoặc dùng ssh-agent/agent-forwarding để vừa bảo mật vừa tiện dụng.

    Làm sao quản lý và xoay vòng nhiều SSH key của nhiều user trên nhiều server?

    Đối với môi trường lớn, nên dùng công cụ quản lý cấu hình/CM như Ansible, Puppet, Chef,… để phân phối, thu hồi và xoay vòng SSH keys theo lịch định kỳ. Một số tổ chức còn triển khai giải pháp quản lý SSH key chuyên dụng hoặc hệ thống IAM để tự động hóa quá trình cấp, thu hồi, gắn quyền theo nguyên tắc “least privilege”.

    Trên đây là toàn bộ quy trình thiết lập SSH Passwordless Login trên Linux, giúp bạn đăng nhập nhanh hơn, an toàn hơn và dễ dàng tích hợp vào các quy trình tự động hóa quản trị hệ thống hằng ngày. Khi triển khai đúng cách, cơ chế xác thực bằng SSH key sẽ trở thành lớp bảo vệ tiêu chuẩn cho hạ tầng server của bạn trước các hình thức tấn công phổ biến từ bên ngoài. Chúc bạn thao tác thành công và hẹn gặp lại bạn trong các bài viết tiếp theo.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách dùng lệnh parted Linux để quản lý Partition mạnh mẽ và linh hoạt
    Cách dùng lệnh parted Linux để quản lý Partition mạnh mẽ và linh hoạt

    parted Linux là một công cụ dòng lệnh chuyên dụng dùng để quản lý phân vùng ổ đĩa như tạo, sửa, xóa, thay đổi kích thước partition và thiết lập bảng phân vùng. Trong quá trình vận hành và quản trị hàng nghìn máy chủ, mình thường xuyên phải xử lý các bài toán mở…

    29/04/2026

    Cách dùng lệnh umount Linux để tháo ổ đĩa và Filesystem an toàn, nhanh chóng
    Cách dùng lệnh umount Linux để tháo ổ đĩa và Filesystem an toàn, nhanh chóng

    umount Linux là công cụ chuyên dụng dùng để tách rời hệ thống tệp hoặc thiết bị lưu trữ khỏi cấu trúc cây thư mục, đảm bảo mọi dữ liệu tạm thời được ghi hoàn tất và các tiến trình liên quan được đóng lại an toàn. Từ kinh nghiệm hỗ trợ hạ tầng cho…

    29/04/2026

    Hướng dẫn sử dụng lệnh shutdown Linux để tắt và khởi động lại hệ thống an toàn
    Hướng dẫn sử dụng lệnh shutdown Linux để tắt và khởi động lại hệ thống an toàn

    shutdown Linux là lệnh dùng để tắt hoặc khởi động lại hệ thống một cách an toàn, đảm bảo tiến trình được đóng đúng cách và hạn chế mất dữ liệu. Bài viết này được mình đúc kết từ quá trình xử lý hàng nghìn sự cố dữ liệu do tắt máy đột ngột cho…

    28/04/2026

    Hướng dẫn sử dụng lệnh jobs trong Linux để quản lý tiến trình nền
    Hướng dẫn sử dụng lệnh jobs trong Linux để quản lý tiến trình nền

    Lệnh jobs trong Linux là công cụ dòng lệnh cơ bản được sử dụng để hiển thị trạng thái của các tiến trình đang chạy trong phiên Terminal hiện tại và đưa chúng vào chế độ nền hoặc tiền cảnh. Bài viết này được mình đúc kết từ quá trình hỗ trợ hàng ngàn khách…

    28/04/2026

    linux

    system-linux

    text