Cách ssh, scp đến máy chủ bỏ qua hỏi password trên Ubuntu
ssh, scp
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.
Cập nhật: lệnh ssh-copy-id
Lệnh này sẽ giúp bạn bỏ qua password cho những lần remote ssh sau đó, khi đã thực hiện thành công bạn không cần phải làm 2 bước như bên dưới.
$ ssh-copy-id USER@IP
-> Điền password
$ ssh-copy-id minh@0.0.0.0
-> Điền password
Lưu ý: thay USER và IP thành tên user và địa chỉ IP máy đích phù hợp!
Bước 1: 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é.
Bước 2: 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: