DevOps, Home slider

Quản lý SSH đến EC2 bằng AWS IAM

Đối với những công ty phần mềm sử dụng Cloud services để phát triển cơ sở hạ tầng thì việc quản lý trao quyền SSH cho Dev là việc tất yếu phải có.

Sau đây mình note lại cách đang dùng để quản lý quyền truy cập SSH của các developers đến AWS EC2 instances, với cách làm này thì mình có thể quản lý credentials thông qua AWS IAM UI, bên cạnh việc sử dụng Ansible thì mình nghĩ đây cũng là một cách khá hay.

Nào bắt đầu nhé:

Bước 1:

Tạo file authorized_keys_command.sh

nano /opt/authorized_keys_command.sh

Với nội dung như sau:

#!/bin/bash -e
 
if [ -z "$1" ]; then
  exit 1
fi
 
SaveUserName="$1"
 
# Một số lệnh để thay thế những ký tự đặt biệt khỏi username
# mình comment lại vì không cần dùng
#SaveUserName=${SaveUserName//"+"/".plus."}
#SaveUserName=${SaveUserName//"="/".equal."}
#SaveUserName=${SaveUserName//","/".comma."}
#SaveUserName=${SaveUserName//"@"/".at."}
 
aws iam list-ssh-public-keys --user-name "$SaveUserName" --query "SSHPublicKeys[?Status == 'Active'].[SSHPublicKeyId]" --output text | while read KeyId; do
  aws iam get-ssh-public-key --user-name "$SaveUserName" --ssh-public-key-id "$KeyId" --encoding SSH --query "SSHPublicKey.SSHPublicKeyBody" --output text 
done

Bước 2: Thêm 2 dòng lệnh sau vào file /etc/ssh/sshd_config

AuthorizedKeysCommand /opt/authorized_keys_command.sh
AuthorizedKeysCommandUser root

Vào AWS IAM add SSH key vào tài khoản được phép truy cập. (Để làm được việc này trước hết người dùng phải tạo ra cặp ssh key (private_key và public_key) bằng lệnh “ssh-keygen“.)

Từ bước này, user có thể ssh vào EC2 bằng lệnh sau

ssh -i private_key username@ec2-ip-address

“private_key” trong câu lệnh trên chính là SSH Key được generate từ máy của user/ developer

Hy vọng bài viết mang lại giá trị cho bạn.

Leave a Reply