Skip to content

Commit 9419fd4

Browse files
authored
Update aws-ssm-ec2-proxy-command.ps1
1 parent 68870d4 commit 9419fd4

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

aws-ssm-ec2-proxy-command.ps1

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env sh
1+
#!/usr/bin/env pwsh
22
######## Source ################################################################
33
#
44
# https://github.com/qoomon/aws-ssm-ec2-proxy-command
@@ -13,15 +13,15 @@
1313
# Add following SSH Config Entry to ~/.ssh/config
1414
# host i-* mi-*
1515
# IdentityFile ~/.ssh/id_rsa
16-
# ProxyCommand powershell .exe ~/.ssh/aws-ssm-ec2-proxy-command.ps1 %h %r %p ~/.ssh/id_rsa.pub
16+
# ProxyCommand powershell.exe ~/.ssh/aws-ssm-ec2-proxy-command.ps1 %h %r %p ~/.ssh/id_rsa.pub
1717
# StrictHostKeyChecking no
1818
#
1919
# Ensure SSM Permissions for Target Instance Profile
2020
# https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html
2121
#
2222
# Open SSH Connection
2323
# ssh <INSTANCE_USER>@<INSTANCE_ID>
24-
#
24+
#
2525
# Ensure AWS CLI environment variables are set properly
2626
# e.g. AWS_PROFILE='default' ssh ec2-user@i-xxxxxxxxxxxxxxxx
2727
#
@@ -49,31 +49,30 @@ if ($splitted_instance.Length -gt 1)
4949
$env:AWS_DEFAULT_REGION = $splitted_instance[1]
5050
}
5151

52-
$authorized_key = "$ssh_public_key ssm-session"
53-
$script = @"
54-
\"
55-
mkdir -p ~$ssh_user/.ssh && cd ~$ssh_user/.ssh || exit 1
52+
Write-Output "Add public key $ssh_public_key_path for $ssh_user at instance $ec2_instance_id for $ssh_public_key_timeout seconds"
53+
$addPublicKeyScript = @"
54+
\"
55+
mkdir -p ~$ssh_user/.ssh && cd ~$ssh_user/.ssh || exit 1
5656
57-
echo '$authorized_key' >> authorized_keys
57+
authorized_key='$ssh_public_key ssm-session'
58+
echo \\\"`$authorized_key\\\" >> authorized_keys
5859
59-
sleep $ssh_public_key_timeout
60+
sleep $ssh_public_key_timeout
6061
61-
grep -v -F '$authorized_key' authorized_keys > .authorized_keys
62-
mv .authorized_keys authorized_keys
63-
\"
62+
grep -v -F \\\"`$authorized_key\\\" authorized_keys > .authorized_keys
63+
mv .authorized_keys authorized_keys
64+
\"
6465
"@
65-
66-
Write-Output "Add public key $ssh_public_key_path for $ssh_user at instance $ec2_instance_id for $ssh_public_key_timeout seconds"
6766
aws ssm send-command `
6867
--instance-ids "$ec2_instance_id" `
6968
--document-name 'AWS-RunShellScript' `
7069
--comment "Add an SSH public key to authorized_keys for $ssh_public_key_timeout seconds" `
71-
--parameters commands="$script"
70+
--parameters commands="$addPublicKeyScript"
7271
if($LASTEXITCODE -ne 0) { Write-Error "Failed to add public key with error $output" }
7372

7473
Write-Output "Start ssm session to instance $ec2_instance_id"
7574
aws ssm start-session `
7675
--target "$ec2_instance_id" `
7776
--document-name 'AWS-StartSSHSession' `
7877
--parameters "portNumber=$ssh_port"
79-
if($LASTEXITCODE -ne 0) { Write-Error "Failed to start ssm session to instance $output" }
78+
if($LASTEXITCODE -ne 0) { Write-Error "Failed to start ssm session to instance $output" }

0 commit comments

Comments
 (0)