Cơ sở kiến thức

Add an SSH key and switch passwords off

Generate an ed25519 key, install it properly, test it before you break anything, and turn password authentication off for good.

Tạo khóa trên máy bạn đang ngồi

Không phải trên máy chủ. Nửa riêng tư không bao giờ được tồn tại trên một máy chủ mà bạn có thể mất quyền truy cập, và sao chép nó xung quanh sẽ phá vỡ mục đích của việc có một khóa.

ssh-keygen -t ed25519 -a 100 -C "laptop-2026"

-a 100 đặt số vòng KDF bảo vệ cụm mật khẩu, thứ duy nhất đứng giữa một chiếc laptop bị đánh cắp và hạm đội của bạn. Hãy dùng cụm mật khẩu. Nếu bạn sở hữu một token phần cứng, hãy dùng nó thay thế:

ssh-keygen -t ed25519-sk -O resident -C "token-1"

Cài đặt nửa công khai

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@<ipv4>

Bằng tay, từ phiên root, nếu tài khoản chưa có mật khẩu:

install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /dev/null /home/deploy/.ssh/authorized_keys
cat >> /home/deploy/.ssh/authorized_keys

Dán dòng duy nhất, sau đó Ctrl-D. Quyền hạn quan trọng hơn người ta nghĩ: sshd từ chối thư mục nhà hoặc thư mục .ssh có quyền ghi cho nhóm và chỉ giải thích trong nhật ký daemon, không bao giờ cho máy khách.

Giới hạn khóa trong khi bạn đang ở đó

Các tùy chọn trong authorized_keys áp dụng cho từng khóa. restrict tắt mọi thứ, và sau đó bạn thêm lại những gì khóa thực sự cần:

restrict,pty ssh-ed25519 AAAAC3Nza... deploy@laptop

Một khóa tồn tại để chạy một công việc nên được phép chạy một công việc:

restrict,command="/usr/local/bin/backup-receive" ssh-ed25519 AAAAC3Nza... backup

Kiểm tra trước khi khóa

Để phiên đầu tiên kết nối. Từ một terminal thứ hai:

ssh -o PreferredAuthentications=publickey deploy@<ipv4> id

Nếu nó in ra uid của bạn, đường dẫn khóa hoạt động. Nếu không, ssh -vvv trên máy khách và journalctl -u ssh -n 50 trên máy chủ sẽ cho biết bên nào không hài lòng. Khoảng một nửa thời gian là quyền hạn và phần lớn thời gian còn lại là sai tên người dùng.

Tắt mật khẩu

cat > /etc/ssh/sshd_config.d/20-keys-only.conf <<EOF
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no
AuthenticationMethods publickey
EOF
sshd -t && systemctl reload ssh

AuthenticationMethods publickey là dây an toàn dưới niềng răng. Ngay cả khi một tệp drop-in sau này âm thầm bật lại mật khẩu, daemon vẫn từ chối bất cứ thứ gì không phải là khóa.

Xác nhận từ máy khách rằng cửa đã đóng:

ssh -o PreferredAuthentications=password deploy@<ipv4>

Kết quả mong đợi là Permission denied (publickey).

Khóa khi triển khai

Bảng điều khiển giữ danh sách khóa cho mỗi tài khoản. Chọn những khóa bạn muốn và cloud-init ghi chúng trong lần khởi động đầu tiên, điều đó có nghĩa là một phiên bản có thể tồn tại lần đầu tiên với xác thực mật khẩu đã tắt. Đính khóa vào đơn hàng biến mười phút ở trên thành một phút.

Khi bạn mất khóa

Không có khôi phục dựa trên danh tính ở đây, vì chúng tôi không giữ danh tính. Bảng điều khiển ngoài băng tần là con đường quay lại: nó truy cập phiên bản qua một đường dẫn không bao giờ chạm vào sshd, và từ một shell cứu hộ bạn có thể thêm khóa mới và tiếp tục.

Giữ một khóa thứ hai trên một máy thứ hai và bạn sẽ không bao giờ cần đọc bài viết đó.

Sẵn sàng khi bạn cần

Chọn thành phố. Chọn kích thước. Thanh toán bằng coin.

Không có biểu mẫu về bạn là ai, không chờ đợi con người phê duyệt, không gọi điện thoại để xác minh bất cứ điều gì. Hóa đơn được thanh toán và thông tin đăng nhập sẽ vào hộp thư của bạn.