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
- 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