SSH Public key

Câu lệnh

ssh-keygen -t rsa -C "Chuổi_bất_kỳ_không_khoảng_trắng"

tạo cặp khoá public id-rsa.pub và private id-rsa cho RPi. Khoá công khai id-rsa.pub cần phải chép vào file authorized_keys trước khi cung cấp cho ứng dụng/máy khác. Các ứng dụng/máy khác sẽ dùng khoá này để kết nối/đăng nhập vào RPi mà không dùng mật khẩu.

Câu lệnh sau đây cung cấp public key cho user@ipAddress

ssh-copy-id user@ipAddress

PuTTY/Bitvise SSH client dùng khoá công khai của RPi-remote để đăng nhập vào RPi-remote

PuTTY/Bitvise SSH Client     RPi-remote
id-rsa.pub của RPi-remote    authorized_keys có chứa id-rsa.pub của mình

Nói chung, một máy bất kỳ RPi1 phải gởi public key của mình cho RPi-remote trước khi có thể đăng nhập vào RPi-remote

RPi1           RPi-remote
id-rsa.pub     authorized_keys có chứa id-rsa.pub của RP1

Debian quản lý các id-rsa.pub bằng cách chép vào file authorized_keys, mỗi public key một dòng. Vì vậy file authorized_keys của RPi-remote có chứa public key của RPi1

Như vậy ở trường hợp đầu tiên, PuTTY/Bitvise SSH client đã dùng khoá công khai của RPi-remote làm public key của mình.

Tóm lại, một máy cần SSH connect đến máy từ xa thì phải gửi khoá công khai đến máy từ xa trước.

Cung cấp public key

  1. RPi1 có thể cung cấp public key cho RPi-remote qua câu lệnh
ssh-copy-id user@rpi-remote-ip

Nếu thành công. public key của RPi1 được ghép vào file authorized_keys cùa RPi-remote

Nếu thất bại (Permission denied (publickey). ), nguyên nhân là RPi1 không thể đăng nhập RPi-remote với user/pass. Vì vậy:

  • user của RPi-remote phải có mật khẩu
  • RPi-remote phải cho phép đăng nhập bằng mật khẩu, nghĩa là phải đặt PasswordAuthentication yes  và PermitRootLogin yes trong /etc/ssh/sshd.config

Có thể tạm thời bật các option trên và tắt sau khi dùng ssh-copy-id

2. Một cách đơn giản hơn là dùng clipboard

  • copy nội dung public key của RPi1 vào clipboard
  • paste vào cuối file authorized_keys của RPi-remote
cat >> ~/.ssh/authorized_keys 

3. Trường hợp trên RPi-remote đã có file public key của RPi1 RPi1.pub

cp /path/to/RPi1.pub >> /home/user/.ssh/authorized_keys

4. Test bằng cách từ RPi1 đăng nhập vàp RPi-remote

ssh user@RPi-remote-ip

Trường hợp riêng

Giả sử các máy đều dùng cùng một cặp public/private key, khi đó mỗi máy đều có thể ssh connect đến các máy khác mà không cần làm gì thêm.

Các ứng dụng có dùng SSH public key

  • scp
  • ssh

Chú thích

  • Nếu gặp lỗi, có thể phải xoá file known_hosts
  • Thư mục .ssh có file mode 700, các file bên trong 600

Comments Off on SSH Public key

Filed under Software

Comments are closed.