Trong linux thì các bạn quá quen việc phải đăng nhập vào server thông qua ssh để check choác, xử lý công việc hàng ngày. Để đơn giản và tối ưu vận hành hệ thống thì một câu hỏi đặt ra là: Có cách nào từ một server bạn muốn ssh vào server khác tự động trong dải mà không cần password?
Tất nhiên là có rồi! Từ client ssh vào server không cần password còn được nữa là!
Cách thực hiện ssh từ server đến server khác mà không cần pass như sau
Ví dụ bạn từ userA trên máy serverA muốn ssh không cần pass vào userB máy serverB
Nội dung bài viết
Tạo private và public key trên máy làm client
Từ userA của serverA gõ
ssh-keygen -t rsa
Sau đó nhập mặc định bằng cách enter
Trong trường hợp không cho nhập trông passphrase thì bạn gõ
ssh-keygen -t rsa -P ""
Copy public key vào file authorized_keys trên server cần login
Tiếp đến là copy nội dung file ~/.ssh/id_rsa.pub serverA. Đăng nhập userB trên serverB paste vào file thư mục ~/.ssh/authorized_keys trên máy serverB.
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
(dán nội dung file id_rsa.pub vào đây)
chmod 600 ~/.ssh/authorized_keys
Script chạy hàng loạt serverB
Bạn có thể chạy 1 hoặc hàng hoạt serverB bằng cách gõ lệnh dưới. Nhớ thay ip_serverB lại cho phù hợp nhé. Bạn có thể soạn 1 file script.sh để cho nhiều server. Chạy đến mỗi server nó sẽ hỏi bạn nhập password cho user đó. cứ nhập vào là ok.
cat ~/.ssh/id_rsa.pub | ssh -oStrictHostKeyChecking=no userB@ip_serverB "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Kiểm tra đăng nhập ssh không cần pass
ssh userB@ip_serverB
nếu bạn đặt ip của serverB trong file host rồi thì chỉ cần gõ
ssh userB@serverB
Tổng kết
Trên đây techxanh vừa hướng dẫn bạn cách đăng nhập ssh vào server khác không không cần nhập password. Chúc bạn thành công. Mọi thắc mắc vui lòng comment bên dưới bài viết nhé!