Home Thủ ThuậtLinux Quản lý kết nối SSH trên Linux / Unix bằng tệp cấu hình SSH
quản lý kết nối SSH trên Linux

Quản lý kết nối SSH trên Linux / Unix bằng tệp cấu hình SSH

by admin
486 views

SSH (Secure Shell) thường được sử dụng để truy cập các máy chủ Linux / Unix từ xa. Để truy cập vào một máy chủ từ xa, yêu cầu một người phải 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, key ssh được sử dụng để cải thiện bảo mật. Nếu bạn chỉ xử lý một máy chủ từ xa, bạn chỉ cần 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ý kết nối ssh trên Linux sẽ giúp bạn không phải nắm vững tất cả các máy chủ từ xa và thông tin đăng nhập của chúng. Trong trường hợp này, tệp cấu hình ssh sẽ giải cứu cho chúng ta.

Để 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ó ssh đã được cài đặt. Các tệp 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ữ private key để xác thực quyền truy cập từ xa bằng key ssh
  • id_rsa.pub – lưu trữ public key
  • known_hosts – Lưu trữ public keys 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 một 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à cấu hình. Không có giới hạn về số lượng hồ sơ bạn có thể tạo. Điều này sẽ cho phép chúng tôi dễ dàng quản lý kết nối ssh trên Linux và tránh 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 dưới đây

$ ssh user@remote-ip 
#Example
$ ssh root@192.168.50.2

Trong trường hợp trên, chúng tôi đang chuyển tên user từ xa và địa chỉ IP hoặc tên máy chủ. Cổng mặc định cho ssh là 22 mà chúng tôi không phải ghi. Nếu chúng tôi đang sử dụng một cổng khác, chúng tôi sẽ sử dụng flag -p sau đó là số cổng như được hiển thị.

ssh user@remote-ip -p 20222

Tạo tệp 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 một cấu hình cho kết nối ở trên và xem sự khác biệt là 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 bên dưới vào tệp

$ vim ~/.ssh/config
Host server1
      Hostname 192.168.50.2
      user     root
      port     20222

Ở đâu:

  • server1 là tên bí danh của 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 của tài khoản người dùng trong hệ thống từ xa mà chúng tôi sẽ đăng nhập.
  • 20222 là cổng dịch vụ SSH được định cấu hình trên hệ thống từ xa

Sau 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 thấy, chúng tôi chỉ phải nhớ tên profile. SSH sẽ tìm kiếm thông tin thích hợp trong tệp cấu hình và sử dụng các tham số đã xác định để truy cập. Bạn có thể thêm nhiều cấu hình như bên dưới:

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

Chuyển một tham số chung cho tất cả cá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ư được 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 đè thông số tệp cấu hình người dùng SSH

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 một 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ách sử dụng flag -o. Ví dụ: giả sử máy chủ 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 khác, lệnh như sau:

ssh -o "User=lorna" server1 

Đặt key Identity trong tệp cấu hình người dùng SSH

Nếu bạn đang kết nối với các máy chủ từ xa bằng cách sử dụng key ssh thay vì mật khẩu, bạn có thể khai báo phần này thành private key như hình dưới đây. Hãy nhớ rằng bạn không thể lưu mật khẩu trong tệp cấu hình và bạn nên sử dụng key ssh để truy cập từ xa.

Host server1
      Hostname 192.168.50.2
      User     root
      Port     20222
      IdentityFile ~/.ssh/id_rsa

Chỉ nhận dạng tệp người dùng SSH

Mặc dù đã xác định đường dẫn đến các identity key như trong cấu hình trên, ssh vẫn sẽ đi qua các danh tính có sẵn cho đến khi tìm thấy một key phù hợp. Điều này thường dẫn đến các lỗi xác thực tăng lên theo số lượng danh tính có sẵn. Để yêu cầu ssh chỉ sử dụng key được chỉ định, chúng tôi sử dụng tham số IdentitiesOnly như hình dưới đây:

Host server1
      Hostname 192.168.50.2
      User     root
      Port     20222
      IdentityFile ~/.ssh/id_rsa
      IdentitiesOnly yes

Tệp người dùng SSH UserKeychain

Nếu xác thực key 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à nó sẽ được lưu trong chuỗi khóa macOS hoặc Gnome keyring.

Host server1
      Hostname 192.168.50.2
      User     root
      Port     20222
      IdentityFile ~/.ssh/id_rsa
      IdentitiesOnly yes
      UserKeychain yes

Đặt tệp máy chủ đã biết của người dùng

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 một 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 các máy chủ từ xa. Bất kỳ khi nào bạn thực hiện kết nối ssh với một máy chủ từ xa, nó sẽ hiển thị cho bạn khóa công khai và bằng chứng về khóa cá nhân tương ứng.

Các dấu vân tay của máy chủ từ xa đượ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 cách sử dụng thông số Kiểm tra nghiêm ngặt. Bạn cũng có thể chuyển đường dẫn tệp máy chủ lưu trữ đã 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

Thời gian chờ kết nối SSH (SSH Connection Time Out) và khoảng thời gian tồn tại của máy chủ (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ọ nên kết nối lại. Phiên chỉ vẫn hoạt động khi người dùng đang làm việc trong máy chủ. Thời gian chờ 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 thời gian 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 các khoảng thời gian mà ssh gửi gói tin để 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  60
      ServerAliveCountMax  720 

Cấp độ nhật ký tệp cấu hình người dùng SSH

Tham số LogLevel xác định phần mở rộng 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à ERRORFATALQUIETVERBOSEINFODEBUG1,..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  60
      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à bạn muốn sử dụng trong tệp hiện tại, bạn nên sử dụng mệnh đề Include, xác định đường dẫn đến tệp cấu hình khác, ở đầu tệp hiện tại như được 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  60
      ServerAliveCountMax  720
      LogLevel      INFO

Trong hướng dẫn này, chúng ta đã thấy một cách dễ dàng để quản lý kết nối ssh trên Linux 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 các máy chủ từ xa khác nhau. Tôi hy vọng bạn đã thích hướng dẫn và tất cả những gì tốt nhất trong cấu hình của bạn.

Xem thêm: Cách bật và sử dụng SSH X11 Forwarding trên Vagrant Instance

Related Posts

error: Content is protected !!