Cấu hình máy khách
Thiết lập ~/.ssh/config
Thiết lập các mục lưu trữ cho ssh
thực sự dễ dàng và sẽ giúp bạn tiết kiệm rất nhiều rắc rối. Đây là một ví dụ:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
Trong ví dụ này, thiết lập chúng ta digitaloceanbox
và github
và github.com
để chúng tôi có thể thực hiện lệnh sau:
ssh github
ssh digitaloceanbox
Nếu chúng tôi muốn đăng nhập như một người dùng khác với người dùng được chỉ định trong tệp cấu hình, chúng tôi chỉ cần đặt user@
ở đầu:
Tạo ssh
khóa
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Lưu ý rằng tôi đã chỉ định đường dẫn đầy đủ của khóa riêng tôi muốn tạo khi được nhắc bởi ssh-keygen
. Tôi cũng đã xác định nhận xét ( -C
) cho phép tôi dễ dàng xác định các khóa trên các máy từ xa.
Điều này sẽ tạo ra hai tệp:
.ssh/digitalocean-rsa
- Phím RIÊNG TƯ . Không bao giờ chia sẻ điều này .
.ssh/digitalocean-rsa.pub
- Khóa công khai. Đây là những gì bạn lưu trữ trên máy chủ để xác thực.
Khi bạn cung cấp ssh
chìa khóa của mình , hãy chắc chắn đó là .pub
phiên bản !! Khi bạn thêm vào ~/.ssh/config
, hãy đảm bảo thêm khóa riêng phù hợp với khóa chung bạn đã thêm vào hệ thống.
Cấu hình máy chủ
Hầu hết các cài đặt sẽ đi kèm với Xác thực khóa công khai được bật. Tuy nhiên, nếu bạn bắt đầu làm mọi thứ một cách vô nghĩa, bạn có thể gặp phải một vài vấn đề. Tại nơi OP gặp vấn đề, tôi khuyên OP nên xóa /root/.ssh/
thư mục để bắt đầu lại.
Bạn không nên sử dụng ssh
để truy cập người dùng root trên hệ thống từ xa. Bạn nên ssh
vào một người dùng khác và sau đó chuyển sang root bằng mật khẩu của bạn ( sudo su -
).
Thêm khóa vào máy chủ bằng cách sử dụng ssh-copy-id
Bất kể bạn quyết định tạo người dùng khác và sử dụng ssh
như người dùng đó hay người dùng root, sau đây là cách đặt ssh
khóa được đề xuất trên máy chủ:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Điều này cho phép sshd
tạo thư mục và tập tin cần thiết với các quyền cần thiết. Điều này có nghĩa là không có cơ hội để bạn làm rối các quyền hoặc cần phải nhớ các chi tiết. Chỉ cần sử dụng công cụ để tải lên các phím.
Vô hiệu hóa xác thực mật khẩu
Điều đó đang được nói, một khi bạn đã tự khóa và xác minh rằng bạn có thể kết nối bằng các khóa, bạn nên tắt Xác thực Mật khẩu trong sshd
và khởi động lại dịch vụ:
- Biên tập
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Còn người dùng mới thì sao?
Nếu bạn tắt Xác thực Mật khẩu, làm thế nào bạn có thể khóa người dùng mới? Một cách là thêm các tệp mẫu vào /etc/skel
thư mục. Khi bạn đã có một người dùng, hãy làm như sau:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Chỉnh sửa bất kỳ tệp nào được tìm thấy
/etc/skel/.ssh/
để chúng trống, trừ khi bạn muốn tự động khóa chính mình cho mọi người dùng mới được tạo.
Khi bạn tạo người dùng mới sudo useradd -m newuser
, người dùng đó sẽ có .ssh/authorized_keys
, bạn có thể chỉnh sửa và sẽ có quyền thích hợp.
Gỡ lỗi
Bạn có thể xem sshd
tệp nhật ký để xem tại sao kết nối không thành công hoặc bị từ chối:
sudo tail -f /var/log/auth.log
Trong khi bạn đang chạy lệnh này, hãy sử dụng một thiết bị đầu cuối khác để thử đăng nhập. Nhiều lần các thông điệp được cung cấp đủ tốt để giúp xác định vấn đề hoặc tìm giải pháp trực tuyến.