Mở đầu
SSH (Secure Shell) thường được sử dụng để truy cập các máy chủ Linux/Unix từ xa. Để truy cập máy chủ từ xa, người ta yêu cầu người ta khai báo tên người dùng, tên máy chủ hoặc địa chỉ IP và mật khẩu hoặc trong hầu hết các trường hợp, khóa ssh được sử dụng để cải thiện bảo mật. Nếu bạn chỉ làm việc với một máy chủ từ xa, bạn có thể dễ dàng chạy cú pháp ssh để truy cập vì bạn sẽ dễ dàng nhớ địa chỉ IP hoặc tên máy chủ.
Tuy nhiên, khi nói đến việc quản lý một số máy chủ từ xa, điều quan trọng là phải có công cụ quản lý ssh để giúp bạn không phải làm chủ tất cả các máy chủ từ xa và thông tin xác thực truy cập của chúng. Trong trường hợp này, tập tin cấu hình ssh sẽ giúp ích cho chúng tôi.

Cấu hình kết nối SSH
Để có thể sử dụng tệp cấu hình ssh, chúng tôi cần cài đặt ssh trong hệ thống của bạn. Hầu hết các máy chủ Linux đều được cài đặt sẵn ssh. Các tập tin của nó được lưu trữ trong thư mục ~/.ssh .
$ ls -l ~/.ssh/
total 16
-rw-------. 1 lorna lorna 2602 Jul 21 17:23 id_rsa
-rw-r--r--. 1 lorna lorna 566 Jul 21 17:23 id_rsa.pub
-rw-------. 1 lorna lorna 1505 Jul 21 17:24 known_hosts
-rw-------. 1 lorna lorna 759 Jul 21 17:24 known_hosts.old
Như bạn có thể thấy thư mục chứa một số tệp như được mô tả bên dưới:
- id_rsa – lưu trữ khóa riêng để xác thực quyền truy cập từ xa bằng khóa ssh
- id_rsa.pub – lưu trữ khóa chung
- known_hosts – Lưu trữ khóa chung cho tất cả các máy chủ đã được kết nối.
Trong thư mục này, chúng ta có thể tạo tệp cấu hình ssh xác định tất cả các máy chủ, tên máy chủ, tên người dùng và mật khẩu của chúng, được gọi là profiles. Không có giới hạn về số lượng profiles bạn có thể tạo. Điều này sẽ cho phép chúng ta dễ dàng quản lý kết nối ssh và tránh việc phải nhớ tất cả. Trong trường hợp bình thường, tôi sẽ kết nối với máy chủ Linux từ xa bằng cú pháp bên dưới
$ ssh user@remote-ip
#Example
$ ssh [email protected]
Trong trường hợp trên, chúng tôi chuyển tên người dùng từ xa và địa chỉ IP hoặc tên máy chủ của máy chủ. Port mặc định cho ssh là 22 mà chúng ta không cần phải ghi. Nếu chúng tôi đang sử dụng một Port khác, chúng tôi sẽ sử dụng cờ -p rồi đến số Port như được hiển thị.
ssh user@remote-ip -p 20222
Tạo tập tin cấu hình người dùng ssh
Bây giờ, hãy tạo một tệp cấu hình (nếu chưa tồn tại) với cấu hình cho kết nối trên và xem sự khác biệt giữa kết nối
touch ~/.ssh/config
Bạn có thể cần đặt quyền cho tệp cấu hình
chmod 600 ~/.ssh/config
Thêm nội dung dưới đây vào tập tin
$ vim ~/.ssh/config
Host server1
Hostname 192.168.50.2
user root
port 20222
Trong đó:
- server1 là tên bí danh máy chủ từ xa được sử dụng để ssh
- 192.168.50.2 là địa chỉ IP của hệ thống từ xa
- root là tên tài khoản người dùng trong hệ thống từ xa mà chúng ta sẽ đăng nhập.
- 20222 là Port dịch vụ SSH được cấu hình trên hệ thống từ xa
Khi bạn lưu tệp, hãy kết nối với server1 như bên dưới. Sau đó bạn sẽ được nhắc nhập mật khẩu.
ssh server1
Như bạn có thể thấy, chúng ta chỉ cần nhớ tên profiles. Ssh sẽ tìm kiếm thông tin phù hợp trong file config và sử dụng các tham số đã xác định để truy cập. Bạn có thể thêm nhiều profiles nhất có thể như dưới đây:
Host server1
Hostname 192.168.50.2
User root
Port 20222
Host server2
Hostname 192.168.50.3
User user1
Port 20223
Host server3
Hostname 192.168.50.4
User user2
Port 20224
Truyền tham số chung cho tất cả máy chủ trong tệp người dùng SSH
Nếu tham số của chúng áp dụng cho tất cả các máy chủ, bạn có thể chuyển nó bằng cách sử dụng * như hiển thị bên dưới ở cuối tệp. Trong trường hợp này giả sử rằng người dùng đăng nhập từ xa cho tất cả các nút là lorna . Bạn có thể thêm tất cả các tham số mặc định mà bạn đang sử dụng.
Host *
user lorna
Ghi đè tham số ssh User Config
Nếu bạn đã khai báo một tham số trong tệp cấu hình và có thể bạn muốn sử dụng tham số khác nhưng không thay đổi cài đặt cấu hình, bạn có thể ghi đè bằng cờ -o. Ví dụ: giả sử server1 từ xa ở trên có nhiều hơn một người dùng đăng nhập và bạn đã khai báo một người dùng trong tệp cấu hình, để sử dụng người dùng kia, lệnh như sau:
ssh -o "User=lorna" server1
Thiết lập Identity Key trong SSH User Config File
Nếu bạn đang kết nối với máy chủ từ xa bằng khóa ssh thay vì mật khẩu, bạn có thể khai báo phần đó bằng khóa riêng như hiển thị bên dưới. Hãy nhớ rằng bạn không thể lưu mật khẩu trong tệp cấu hình và nên sử dụng khóa ssh để truy cập từ xa.
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
SSH User File Identities Only
Mặc dù đã xác định đường dẫn đến khóa nhận dạng như trong cấu hình trên, ssh vẫn sẽ duyệt qua các danh tính có sẵn cho đến khi tìm thấy khóa nhận dạng phù hợp. Điều này thường dẫn đến lỗi xác thực và tỷ lệ này tăng theo số lượng danh tính có sẵn. Để yêu cầu ssh chỉ đi tìm khóa được chỉ định, chúng tôi sử dụng tham số IdentitiesOnly như hiển thị bên dưới:
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
UserKeychain SSH User File
Nếu xác thực khóa ssh của bạn yêu cầu mật khẩu, bạn có thể sử dụng UserKeyChain để cho phép bạn chỉ nhập mật khẩu lần đầu tiên và mật khẩu sẽ được lưu trong chuỗi khóa macOS hoặc chuỗi khóa Gnome.
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
UserKeychain yes
Cấu hình User Known Hosts File
Tệp máy chủ đã biết cho phép máy khách xác thực các máy chủ từ xa. Nó chứa danh sách các khóa cho các máy chủ từ xa mà người dùng đã kết nối. Điều này giúp người dùng đảm bảo rằng họ không kết nối sai máy chủ từ xa. Bất cứ khi nào bạn thực hiện kết nối ssh đến một máy chủ từ xa, nó sẽ hiển thị cho bạn khóa chung và bằng chứng về khóa riêng tương ứng.
Dấu vân tay của máy chủ từ xa sẽ được thêm vào tệp Know_hosts , nếu bạn chưa có chúng, để mỗi khi bạn truy cập vào cùng một máy chủ, nó sẽ được xác minh dựa trên dấu vân tay hiện có. Đây là lý do tại sao nếu bạn cài đặt lại máy chủ từ xa và cố gắng truy cập lại vào nó, bạn sẽ nhận được cảnh báo về dấu vân tay không xác định vì nó có thể đã thay đổi trong quá trình cài đặt lại. Việc kiểm tra này được thực thi bằng tham số StrictHostKeyChecking . Bạn cũng có thể chuyển đường dẫn tệp máy chủ đã biết.
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
UserKnownHostsFile ~/.ssh/known_hosts
StrictHostKeyChecking yes
Host server2
Hostname 192.168.50.3
User root
Port 2022
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
StrictHostKeyChecking no
Cấu hình Connection Time Out và Server Alive Interval
Nếu máy khách người dùng kết nối với máy chủ từ xa vẫn không hoạt động, họ sẽ kết nối lại. Phiên chỉ hoạt động khi người dùng đang làm việc trên máy chủ. Hết thời gian kết nối xác định khoảng thời gian người dùng không hoạt động trước khi hết phiên. Tham số được sử dụng để xác định thời gian chờ kết nối là ServerAliveCountMax . Mặt khác, ServerAliveInterval xác định khoảng thời gian ssh gửi gói để kiểm tra tính khả dụng của máy chủ.
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
UserKnownHostsFile ~/.ssh/known_hosts
#UserKnownHostsFile /dev/null
StrictHostKeyChecking yes
ServerAliveInterval 30
ServerAliveCountMax 720
Cấu hình Log Level người dùng SSH
Tham số LogLevel xác định phạm vi chi tiết của nhật ký ssh ở phía máy khách. Hầu hết các giá trị thường được sử dụng là ERROR , FATAL , QUIET , VERBOSE , INFO , DEBUG1 , v.v.
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
UserKnownHostsFile ~/.ssh/known_hosts
StrictHostKeyChecking yes
ServerAliveInterval 30
ServerAliveCountMax 720
LogLevel INFO
Bao gồm một tệp cấu hình khác trong tệp cấu hình người dùng SSH
Nếu bạn đã có một tệp cấu hình khác và muốn sử dụng trong tệp hiện tại, bạn nên sử dụng mệnh đề Bao gồm , xác định đường dẫn đến tệp cấu hình khác, ở đầu tệp hiện tại như hiển thị bên dưới. Bạn nên cung cấp đường dẫn tuyệt đối của tệp nếu không ssh sẽ cho rằng chúng nằm trong ~/.ssh
Include <path-to-file>
#example Include ~/.ssh/config.d/myservers
Host server1
Hostname 192.168.50.2
User root
Port 20222
IdentityFile ~/.ssh/myid_rsa
IdentitiesOnly yes
UserKnownHostsFile /dev/null
StrictHostKeyChecking yes
ServerAliveInterval 30
ServerAliveCountMax 720
LogLevel INFO
Kết luận
Trong hướng dẫn này, chúng ta đã thấy một cách dễ dàng để quản lý các kết nối ssh từ xa bằng cách sử dụng tệp cấu hình người dùng ssh. Nó khá thuận tiện và bạn có thể đặt các thông số khác nhau cho nhiều máy chủ từ xa khác nhau. Tôi hy vọng bạn thích hướng dẫn này và đạt được những điều tốt nhất trong cấu hình của mình.
Đăng ký liền tay Nhận Ngay Bài Mới
Subscribe ngay
Cám ơn bạn đã đăng ký !
Lỗi đăng ký !
Add Comment