Last active
June 25, 2024 01:10
-
-
Save lukeplausin/4b412d83fb1246b0bed6507b5083b3a7 to your computer and use it in GitHub Desktop.
Transfer a file to EC2 SSM instance without using S3 (SSM only)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This script will explain how to transfer a file to EC2 using SSM ONLY! | |
# You will need to have permission to run SSM commands on the target machine and have sudo access as well | |
# Infos | |
INSTANCE_ID=i-1234567890 | |
FILE_NAME=the_file.tar.gz | |
# Step 1: Run command on machine to install netcat and dump from port to filename | |
# < Start session | |
aws ssm start-session --target $INSTANCE_ID --document-name | |
# < (On target machine) : | |
cd && sudo yum install nc -y && sudo nc -l -p 1234 > the_file.tar.gz | |
# Step 2: On another shell, open a port-forwarding session from your machine to the target machine | |
aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["1234"],"localPortNumber":["1234"]}' | |
# Step 3: On yet another shell, cat the source file into the transfer port on localhost over the tunnel | |
nc -w 3 127.0.0.1 1234 < the_file.tar.gz | |
# Step 4: Once the command in step 3 finishes, close all of the other shell sessions. Your file should be on the target now. |
That's handy! I had to remove the --document-name
on the first start-session
call.
similarly, have you tried copying a file from ec2 to your local machine without using s3
Extremely helpful! Thank you for sharing.
Very helpful, thank you Luke ..
Thank helpful
Thanks for your script.
I wanted to download a file from the EC2 instance, so the commands are reversed somewhat.
Step 1: On EC2 instance dump from filename to port
nc -l 1234 < the_file.tar.gz
Step 2: On your machine open a shell, open a port-forwarding session from your machine to the target machine
aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["1234"],"localPortNumber":["1234"]}'
Step 3: On your machine open another shell, use nc to read the data over the tunnel and write to destination file
nc -w 3 localhost 1234 > the_file.tar.gz
Step 4: Once the command in step 3 finishes, close all of the other shell sessions. Your file should be on the destination now.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was really useful. Thanks for publishing