[OpenSSH] Fix lỗi phân quyền đúng ‘authorized_keys’ và thư mục để đăng nhập SSH Key trên Linux

Hôm nay mình sẽ nói đến việc fix lỗi không đăng nhập được SSH Key trên Linux bằng cách phân quyền chính xác các thư mục và file tương ứng trên dịch vụ OpenSSH Linux.

Khi mà bạn cấu hình hoạt động SSH key trên Server Linux có thể bạn sẽ gặp phải tình trạng như sau :
– Đã copy nội dung public key vào file $HOME/.ssh/authorized_keys.
– Đã kiểm tra file cấu hình enable hoạt động đăng nhập bằng ssh key trên hệ thống.
-> Nhưng vẫn không đăng nhập được bằng SSH private-public key.

Lúc này nếu bạn đã kiểm tra rằng mình cấu hình dịch vụ ssh key ở file /etc/ssh/sshd_config hoàn toàn chính xác thì bạn phải xét đến trường hợp đó là phân quyền của bạn với thư mục liên quan và file ‘authorized_keys‘ chưa chính xác nên dẫn đến việc bạn không thể đăng nhập vào hệ thống Linux bằng SSH Key.

 
Tại sao phải phân quyền đúng đối với thư mục và file ‘authorized_keys’ ?

Ngày trước mình cũng thắc mắc như trên, có phải do mặc định phải phân quyền sao cho phù hợp thì mới được đăng nhập bằng ssh key hay không ? Sau một hồi tìm hiểu thì rất đơn giản là do 1 option trong file cấu hình dịch vụ được bật mặc định đó là, dù uncomment nhưng mặc định là bật nhé :

# vi /etc/ssh/sshd_config
#StrictModes yes

 
Mặc định option này sẽ làm nhiệm vụ là gì : khi người dùng tiến hành đăng nhập hệ thống Linux, OpenSSH sẽ kiểm tra phương thức đăng nhập nếu là SSH Key thì nó sẽ kiểm tra phân quyền của các thư mục liên quan chứa file ‘authorized_keys‘ và bản thân phân quyền file ‘authorized_keys‘. Nếu phân quyền không phù hợp thì OpenSSH sẽ bỏ qua phương thức đăng nhập SSH Key và đẩy sang phương thức khác như mật khẩu nếu được cấu hình kèm.

Như vậy nếu bạn sợ mình phân quyền hoài không đúng, không đăng nhập được bằng SSH Key ? Thì hãy tắt option này đi và khởi động lại, lúc này dù phân quyền là gì thì bạn sẽ đăng nhập được bằng SSH Key nếu khớp private key và public key chứa trong file ‘authorized_keys’.

# vi /etc/ssh/sshd_config
StrictModes no
# sshd -t
# /etc/init.d/sshd restart

 
Vậy để phân quyền đúng thì phải làm sao ?

Nếu OpenSSH mặc định bật option ‘StrictModes‘ thì họ muốn chúng ta đề cao mục đích an toàn thông tin ngay trong hệ thống Linux nhằm đảm bảo một số giới hạn đối với các user khác trong hệ thống sẽ không thể thay đổi được nội dung file ‘authorized_keys‘. Vậy phân quyền như thế nào mới gọi là đúng ? Theo manual của OpenSSH mục sshd : http://man.openbsd.org/sshd_config

This is normally desirable because novices sometimes accidentally leave their directory or files world-writable

-> Những thư mục liên quan và file ‘authorized_keys‘ không nên được phân quyền ghi  (write) cho các nhóm ‘group‘ và ‘others‘ , ngoại trừ owner. Các thư mục ở đây gồm : thư mục ‘$HOME‘ của user, thư mục ‘./.ssh/‘ của user. Nếu bạn cấu hình ở thư mục khác để quản lý tập trung thì bạn cũng không được set quyền đọc cho các thư mục cấp cha chứa file ‘authorized_keys‘.

 
Tiến hành phân quyền chính xác thư mục liên quan và file ‘authorized_keys’

Từ trên mình đúc ra các phân quyền chính xác và phù hợp để bạn có thể sử dụng trên hệ thống OpenSSH Linux khi xài mặc định option ‘StrictModes yes‘. Ta phân quyền như sau với thư mục mặc định của user khi được tạo ra:

# chmod 600 $HOME/.ssh/authorized_keys
# chmod 700 $HOME/.ssh/
# chmod go-w $HOME/.ssh/
# chmod go-w $HOME/

 
Như vậy là đủ rồi đấy, còn với các file như private key ‘id_rsa‘ và public key ‘id_rsa.pub‘ thường chỉ dùng để làm thông tin đăng nhập máy chủ khác nên OpenSSH không có check những phân quyền file này, nhưng nếu được thì bạn nên phân quyền an toàn như sau :

# chmod 400 $HOME/.ssh/id_rsa
# chmod 644 $HOME/.ssh/id_rsa.pub

 
Như vậy chúng ta đã xong phần phân quyền thư mục và file ‘authorized_keys’ trên hệ thống máy chủ Linux sử dụng dịch vụ OpenSSH. Hy vọng các bạn tiếp nhận được bài viết bổ ích. Cám ơn các bạn.

Previous article[News] Google vừa công bố việc nghiên cứu phát triển OS Fuchsia mới lạ
Next article[MacOS] Hướng dẫn tạo chuỗi hash MD5, SHA1, SHA256 và SHA512 để kiểm tra checksum trên MacOS
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !