Kiến Thức Linux Linux Nâng Cao

Quản lý kết nối SSH trên bằng Config file

Manage-Multiple-SSH-Connections

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.

Quản lý nhiều kết nối SSH

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

Click here to post a comment

Đă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ý !