Hướng dẫn sử dụng ssh-copy-id

1076
28-03-2018
Hướng dẫn sử dụng ssh-copy-id

ssh-copy-id cài đặt SSH key trên máy chủ dưới dạng authorized key (khóa được ủy quyền). Mục đích của nó là cung cấp quyền truy cập mà không yêu cầu mật khẩu cho mỗi lần đăng nhập. Điều này tạo điều kiện cho việc đăng nhập tự động, không mật khẩu và đăng nhập một lần bằng giao thức SSH. Bài viết dưới đây, Bizfly Cloud sẽ hướng dẫn cách sử dụng ssh-copy-id dành cho bạn đọc. 

Công cụ ssh-copy-id là một phần của OpenSSH.

Thiết lập public key authentication

Xác thực dựa trên khóa trong SSH (Key based authentication) được gọi là xác thực khóa công khai (public key authentication). Mục đích của ssh-copy-id là thiết lập xác thực khóa công khai dễ dàng hơn. Quá trình này như sau.

1. Tạo một SSH key

Với OpenSSH, SSH key được tạo bằng ssh-keygen. Ở dạng đơn giản nhất, chỉ cần chạy ssh-keygen và trả lời các câu hỏi. Ví dụ sau minh họa điều này.

Hướng dẫn sử dụng ssh-copy-id  - Ảnh 1.

Việc tạo một cặp khóa (public key và private key) chỉ mất một phút. Các tệp khóa thường được lưu trữ trong thư mục ~/.ssh.

2. Copy key tới server

Khi SSH key đã được tạo, lệnh ssh-copy-id có thể được sử dụng để cài đặt làm authorized key trên server. Khi key đã được ủy quyền cho SSH, nó cấp quyền truy cập vào server mà không cần mật khẩu.

Sử dụng lệnh như sau để sao chép SSH key:

ssh-copy-id -i ~/.ssh/mykey user@host

Điều này sẽ đăng nhập vào server host và sao chép các keys tới server và cấu hình chúng để cấp quyền truy cập bằng cách thêm chúng vào tệp authorized_keys. Việc sao chép có thể yêu cầu mật khẩu hoặc xác thực cho server.

Chỉ có public key được sao chép vào server. Private key không bao giờ được sao chép sang một máy khác.

3. Test key mới

Khi key đã được sao chép, tốt nhất là hãy tiến hành kiểm tra nó:

ssh -i ~/.ssh/mykey user@host

Việc đăng nhập bây giờ sẽ được thực hiện mà không yêu cầu mật khẩu. Tuy nhiên, lưu ý rằng lệnh có thể yêu cầu cụm mật khẩu bạn chỉ định cho key.

4. Troubleshooting

Có một số lý do khiến test có thể không thành công:

- Server không được cấu hình để chấp nhận public key authentication. Đảm bảo /etc/ssh/sshd_config trên server có chứa PubkeyAuthentication yes. Hãy nhớ khởi động lại quá trình sshd trên server.

- Nếu cố đăng nhập dưới dạng root, server có thể không được cấu hình để cho phép đăng nhập root. Hãy chắc chắn rằng /etc/sshd_config bao gồm PermitRootLogin yes, PermitRootLogin prohibit-password, hoặc không có mật khẩu. Nếu nó được thiết lập để forced-commands-only, key phải được cấu hình bằng tay để sử dụng một lệnh bắt buộc (xem lệnh = tùy chọn trong ~/.ssh/authorized_keys).

- Đảm bảo client cho phép public key authentication. Kiểm tra xem /etc/ssh/config có bao gồm PubkeyAuthentication yes không.

-  Hãy thử thêm tùy chọn -v vào lệnh ssh. Đọc output về việc liệu key đó có được thử hay không và phương thức xác thực nào sẽ được server chấp nhận.

- OpenSSH chỉ cho phép tối đa năm keys được thử tự động. Nếu bạn có nhiều keys hơn, bạn phải chỉ định key nào sẽ sử dụng bằng tùy chọn -i để ssh.

Cách thức hoạt động của SSH-COPY-ID

- ssh-copy-id sử dụng SSH protocol để kết nối với máy chủ đích và tải lên SSH user key. Lệnh chỉnh sửa tệp authorized_keys trên server. Nó tạo thư mục .ssh, tạo ra các authorized keys file. ssh key sao chép vào server.

- ssh-copy-id cũng kiểm tra xem key đã tồn tại trên server chưa. Trừ khi tùy chọn -f được sử dụng, mỗi key chỉ được thêm vào authorized keys file một lần.

- ssh-copy-id tiếp tục đảm bảo rằng các key files quan trọng luôn có quyền thích hợp. Nói chung, thư mục chính của người dùng hoặc bất kỳ tệp hoặc thư mục nào chứa keys files sẽ không được ghi bởi bất kỳ ai khác. Nếu không, bất kì ai đều có thể thêm các authorized keys mới cho người dùng và giành quyền truy cập. Private key files không nên bị đọc bởi người ngoài.

Một vài best practices của SSH keys

SSH key rất hữu ích, nhưng có thể dẫn đến sự cố nếu chúng không được quản lý đúng cách. Chúng là các xác nhận truy cập giống như user names và passwords. Nếu chúng không được xóa đúng cách khi mọi người rời khỏi hoặc hệ thống ngừng hoạt động, sẽ không ai có thể biết được ai thực sự có quyền truy cập vào hệ thống và dữ liệu nào. Nhiều tổ chức lớn đã sỡ hữu hàng triệu SSH keys.

- Sử dụng Passphrase khi có thể

Các chương trình ssh-agent và ssh-add có thể được sử dụng để tránh phải nhập cụm mật khẩu mỗi khi key được sử dụng.

- Thêm giới hạn khi có thể

Một command restriction cơ bản là một tùy chọn một command = "<permitted command>" được thêm vào đầu dòng trong tập tin authorized_keys của server.

- Quản lý SSH keys

Công cụ copy-id có thể nguy hiểm. Nó có thể dễ dàng vô tình cài đặt multiple keys hoặc unintended keys khi được ủy quyền. Logic để chọn khóa cần cài đặt nào là phức tạp.

- Tùy chọn command-line

ssh-copy-id [-f] [-n] [-i identity file] [-p port] [-o ssh_option] [user@]hostname

-  SSH-COPY-ID trên MAC

Bạn có thể kiểm tra xem Mac của bạn có  hay không bằng cách mở một terminal window (Finder/ Go/ Utilities/ Terminal) và gõ ssh-copy-id.

- Cài đặt sử dụng HOMEBREW

brew install ssh-copy-id

- Cài đặt từ MACPORTS

sudo port install openssh ssh-copy-id

- Cài đặt sử dụng CURL

curl -L https://raw.githubusercontent.com/beautifulcode/ssh-copy-id-for-OSX/master/install.sh | sh

Dịch từ: ssh.com/ssh/copy-id

Nguồn: Bizfly Cloud chia sẻ

>> Có thể bạn quan tâm: Bảo mật dịch vụ Cron trong hệ thống máy chủ Linux

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE