Để đăng nhập từ xa vào một server qua ssh bạn có hai cách để xác thực:
- passwd based
- key based
Với passwd based, bạn cần phải ghi nhớ passwd. SSH là giao thức an toàn nên bạn không lo passwd bị truyền clear text qua network
Với key based, bạn không cần passwd, thay vì passwd bạn sẽ dùng một cặp public và private key để truyền thông giữa client và server. Client sẽ giữ private key và mã hóa thông điệp còn public key sẽ nằm trên server dùng để giải mã thông điệp
Các bước thực hiện
Tại client:
Tạo một cặp private và public key. PKI có hai loại giải thuật chính là rsa và dsa. Hiện tại dsa được sử dụng phổ biến hơn.
ssh-keygen -b 1024 -t dsa
Một cặp id_dsa và id_dsa.pub được tạo ra. Bạn cất giữ id_dsa trong ~/.ssh
và set quyền truy cập đến ~/.ssh/id_dsa là 400 còn thư mục ~/.ssh bạn set quyền 700
Vì private key được quản lý bởi ssh-agent, bạn cần add private key vào ssh-agent. Thông thường ssh-agent sẽ tự nhận diện nhưng không phải luôn luôn được như ý.
ssh-add <path to private key>
Tiếp đến đẩy id_dsa.pub lên server dùng scp (ở bước này, bạn đăng nhập vào server dùng passwd based ssh)
scp id_dsa.pub <user>@<server ip>:/home/<user>/
Trên server:
Tạo trên server thư mục /home/<user>/.ssh có chứa file authorized_key
Thư mục .ssh này cũng set quyền 700
Nối tiếp nội dung file id_dsa.pub vào authorized_key:
cat id_dsa.pub >> /home/<user>/.ssh/authorized_key
File authorized_key bạn set quyền 600
Điều chỉnh trong ssh config: /etc/ssh/sshd_config
Bỏ comment các dòng sau:
RSAAuthentication yes
PubKeyAuthentication yes
AuthorizedKeysFile /home/<user>/.ssh/authorized_key
Cuối cùng restart lại ssh server
Truy cập từ xa qua ssh:
ssh -vv <user>@<server ip>
Không có nhận xét nào:
Đăng nhận xét