Cách ssh, scp đến máy chủ bỏ qua hỏi password trên Ubuntu

  Apr 8, 2020      2m
   

ssh, scp

Cách ssh, scp đến máy chủ bỏ qua hỏi password trên Ubuntu

Giả sử bạn hay thao tác ssh truy cập hoặc copy file dùng scp từ máy nguồn (máy A) đến máy đích server (máy B). Mỗi câu lệnh truy cập hoặc copy file đều sẽ bị hỏi mật khẩu password truy cập. Nếu thao tác nhiều lần và đều phải điền pass thì công việc sẽ không hiệu quả.

Cấu hình để máy server tin tưởng không hỏi password đòi hỏi đánh đổi security một chút (vì nếu máy A bị hack thì sẽ vô tư truy cập gửi file vào máy B), nhưng bù lại bạn sẽ không phải gõ password nhiều lần.

Trên máy nguồn (máy A)

Chạy lệnh sau để generate private key và public key. Cứ Enter để sử dụng lựa chọn mặc định.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0fqE1+pV+/HryH+z8owu/vW2jFf+lA0HT0pvda1DHPs root@d77ecddab481
The key's randomart image is:
+---[RSA 2048]----+
|              .  |
|         .   . o.|
|        . .   * =|
|         + . o Oo|
|        S o . * E|
|         + . . *+|
|          o . .=+|
|         . o..B=B|
|          o.+B*@%|
+----[SHA256]-----+

Sau đó copy public key đến máy đích (máy B, máy server)

$ scp ~/.ssh/id_rsa.pub USER@HOST:/home/USER/.ssh/authorized_keys

# điền pass để copy file

Lưu í: nếu trên máy B chưa có file authorized_keys trong thư mục .ssh thì bạn scp như lệnh trên. Nếu file đó đã tồn tại rồi thì bạn lấy nội dung của file id_rsa.pub (trên máy A) thêm vào authorized_keys (trên máy B) nhé.

Trên máy đích (máy B)

Chỉnh phân quyền file authorized_keys:

$ chmod 700 ~/.ssh/authorized_keys

Lưu í: có thể cần phải thao tác thêm bước sau để cho phép ssh login vào tài khoản root.

$ sudo nano /etc/ssh/sshd_config

# Nếu giá trị "PermitRootLogin" đang set là "no" thì sửa nó thành "yes"

PermitRootLogin yes

# Lưu lại nội dung

Sau khi chỉnh sửa config của sshd xong thì restart lại service này:

$ sudo systemctl restart ssh

Cách cấu hình khá đơn giản, vậy là từ đây về sau khi ssh hoặc scp từ máy A vào máy B sẽ không cần nhập pass nữa.

Tài liệu tham khảo: