Cấu hình bỏ qua việc nhập password khi dùng scp để transfer files giữa client & server

Secure copy protocol (SCP) là công cụ mà developer thường sử dụng để transfer files giữa máy client và server, nó hoạt động trên nền giao thức SSH (Secure Shell). Server thường là máy chạy Linux, còn client có thể là Windows hoặc Linux. Ví dụ →

Câu lệnh trên sẽ copy file system-qemu.img ở trên server về máy client nhưng default thì khi sử dụng lệnh SCP để copy file về từ server (hoặc copy file từ client lên server) thì bạn cần phải nhập SSH password của server (như trên). Việc phải nhập password sau mỗi câu lệnh scp khá là phiền phức, để loại bỏ phiền phức đó thì các bạn có thể làm theo hướng dẫn sau.


Client chạy Windows, server chạy Linux

  • Trên client (Windows) sử dụng ssh-keygen để tạo ra ssh key (private + public). Khi dùng ssh-keygen các bạn có thể cứ để trống và Enter hết cho nhanh →
  • Lệnh bên trên tạo ra cặp key là id_rsa (private key) và id_rsa pub (public key) và lưu vào đường dẫn C:\Users\tuanp\.ssh. Tiếp theo ta cần đăng ký public key đã tạo ra với server để server verify và lưu trên server sử dụng cho việc tự động authenticate về sau.
    • Sử dụng Notepad++ mở file C:\Users\tuanp/.ssh/id_rsa.pub lên ta sẽ thấy một chuỗi ký tự rất dài, đó chính là public key

      → Copy toàn bộ nội dụng file này
    • Tiếp theo trên Server (Linux): Kiểm tra xem ở đường dẫn /home/<user>/.ssh/ đã có file authorized_keys chưa, nếu chưa có thì tự tạo file này, nếu có rồi thì mở lên và paste nội dung file id_rsa.pub trên client vào một dòng mới và save lại.
  • Done: từ nay về sau khi bạn có thể dùng scp trên máy client này để truy cập vào files trên server thì sẽ không cần nhập password nữa.

Client và server đều chạy Linux

  • Trên client (Linux) ta cũng sử dụng ssh-keygen tương tự như trên để tạo ra ssh key (private + public) →
  • Lệnh bên trên tạo ra cặp key là id_rsa (private key) và id_rsa pub (public key) và lưu vào đường dẫn ~/.ssh/. Bây giờ ta cần phải gửi public này cho server để server verify, ta sẽ sử dụng lệnh ssh-copy-id, ví dụ như sau →

    Trong đó 192.168.1.10 là địa chỉ IP của máy server, tuanpm là account bạn sử dụng để ssh vào máy đó. Các bạn cần thay thế bằng account và địa chỉ IP máy server của bạn. (Khi chạy lệnh này bạn sẽ phải nhập ssh password)
  • Done nhưng sau khi lệnh được thực thi thì từ nay về sau khi bạn có thể dùng scp để copy file lên hoặc lấy file về từ server mà không cần nhập password.

— Phạm Minh Tuấn (Shun) —