17/09/2018, 21:58

3 bước thực hiện đăng nhập SSH an toàn mà không cần mật khẩu

Bạn có thể đăng nhập máy chủ Linux từ xa mà không cần nhập mật khẩu chỉ trong ba bước thông qua ssky-keygen và ssh-copy-id. ssh-keygen tạo khóa công khai và khóa bí mật. ssh-copy-id sao chép khóa công khai của local-host đến file xác thực đăng nhập của remote-host. ssh-copy-id cũng ...

openssh-300x99

Bạn có thể đăng nhập máy chủ Linux từ xa mà không cần nhập mật khẩu chỉ trong ba bước thông qua ssky-keygen và ssh-copy-id.

ssh-keygen tạo khóa công khai và khóa bí mật. ssh-copy-id sao chép khóa công khai của local-host đến file xác thực đăng nhập của remote-host. ssh-copy-id cũng gán quyền thích hợp cho địa chỉ gốc remote-host,  ~/.ssh, và ~/.ssh/authorized_keys.

Bước 1: tạo khóa công khai và khóa bí mật thông qua ssh-key-gen trên local-host

jsmith@local-host$ [Chú ý: bạn đang ở local-host]

jsmith@local-host$ ssh-keygen
Tạo cặp khóa công khai/bí mật RSA.
Nhập file bạn muốn lưu khóa (/home/jsmith/.ssh/id_rsa):[Enter]
Nhập mật khẩu (để trống nếu không cần mật khẩu): [Enter]
Nhập lại mật khẩu: [Enter]
ID của bạn được lưu tại /home/jsmith/.ssh/id_rsa.
Khóa công khai của bạn được lưu tại /home/jsmith/.ssh/id_rsa.pub.
Khóa fingerprint:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host

Bước 2: sao chép khóa công khai đến remote-host thông qua ssh-copy-id

jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
jsmith@remote-host's password:
Giờ hãy thử đăng nhập, với "ssh 'remote-host'", và kiểm tra

.ssh/authorized_keys

để đảm bảo rằng không có thêm khóa nào không mong muốn trong đó.

Ghi chú: ssh-copy-id gán khóa vào remote-host’s .ssh/authorized_key.

Bước 3: Đăng nhập remote-host mà không sử dụng mật khẩu

jsmith@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Chú ý: SSH không yêu cầu mật khẩu]

jsmith@remote-host$ [Chú ý: bạn đang ở local-host]

Trên đây là ba bước đơn giản đến thực hiện trong hầu hết các trường hợp.

Sử dụng ssh-copy-id cùng với ssh-add/ssh-agent

Khi không giá trị nào được thông qua option -t và ~/.ssh/identity.pub không có sẵn, ssh-copy-id sẽ hiện thông báo lỗi:

 jsmith@local-host$ ssh-copy-id -i remote-host
/usr/bin/ssh-copy-id: ERROR: No identities found

Nếu bạn đã tải khóa vào ssh-agent thông qua ssh-add, sau đó ssh-copy-id sẽ lấy khóa từ ssh-agent để sao chép lên remote-host. Ví dụ nó sao chép khóa cung cấp bởi lệnh ssh-add -L lên remote-host, khi bạn không thông qua option -i trong ssh-copy-id.

 jsmith@local-host$ ssh-agent $SHELL

jsmith@local-host$ ssh-add -L
agent không có ID.

jsmith@local-host$ ssh-add
ID đã được thêm: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

jsmith@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa

jsmith@local-host$ ssh-copy-id -i remote-host
jsmith@remote-host's password:
Giờ hãy thử đăng nhập, với"ssh 'remote-host'", và kiểm tra

.ssh/authorized_keys

để đảm bảo rằng không có thêm khóa nào không mong muốn trong đó.

Ba vấn đề xung quanh ssh-copy-id

  1. Khóa công khai mặc định: ssh-copy-id sử dụng ~/.ssh/identity.pub như một khóa công khai mặc định. Thay vào đó, tôi muốn nó sử dụng id_dsa.pub, hoặc id_rsa.pub, hoặc identity.pub làm khóa mặc định. Nếu một trong số chúng tồn tại, nó sẽ sao chép khóa lên remote-host. Nếu 2 hoặc 3 khóa tồn tại, nó sẽ sao chép khóa mặc định identity.pub
  2. Agent không có ID: Khi ssh-agent đang chạy và ssh-add -L trả về “The agent has no identities”, ssh-copy-id sẽ vẫn sao chép thông điệp “The agent has no identities” lên authorized_keys của remote-host.
  3. Trùng lặp entry trong authorized_keys: Tôi muốn ssh-copy-id kiểm tra trùng lặp entry trong authorized_keys của remote-host. Nếu bạn thực hiện ssh-copy-id nhiều lần trên local-host, nó sẽ vẫn gán cùng khóa vào authorized_keys của remote-host mà không kiểm tra trùng lặp.
0