Skip to content

Commit ab88585

Browse files
authored
Merge pull request #1 from aosus/Tailscale-ssh
Add Tailscale SSH support
2 parents 974b0b4 + b890285 commit ab88585

File tree

3 files changed

+43
-27
lines changed

3 files changed

+43
-27
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ Docker-compose runtime arguments and options. Below is a common usage example:
3737

3838
Specify Remote Docker host. The input value must be in the following format (user@host)
3939

40+
### `tailscale_ssh`
41+
Enables Tailscale ssh mode, which uses managed ssh keys from tailscale.
42+
When enabled, ssh_private_key and ssh_public_key aren't required
43+
4044
### `ssh_public_key`
4145

4246
Remote Docker SSH public key.

action.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ inputs:
77
required: true
88
ssh_public_key:
99
description: Remote Docker SSH public key
10-
required: true
1110
ssh_private_key:
1211
description: SSH private key used to connect to the docker host
13-
required: true
12+
tailscale_ssh:
13+
description: Use Tailscale SSH to conncet to the server with managed SSH keys
14+
default: 'false'
1415
args:
1516
description: Deployment command args.
1617
required: true

docker-entrypoint.sh

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,21 @@ if [ -z "$INPUT_REMOTE_DOCKER_HOST" ]; then
1313
exit 1
1414
fi
1515

16-
if [ -z "$INPUT_SSH_PUBLIC_KEY" ]; then
17-
echo "Input ssh_public_key is required!"
18-
exit 1
19-
fi
20-
21-
if [ -z "$INPUT_SSH_PRIVATE_KEY" ]; then
22-
echo "Input ssh_private_key is required!"
23-
exit 1
16+
# Ignore SSH keys when using Tailscale SSH
17+
if "$TAILSCALE_SSH"
18+
then
19+
echo "Tailscale SSH mode enabled, Manual SSH keys not required"
20+
else
21+
echo "Normal SSH mode, checking SSH keys"
22+
if [ -z "$INPUT_SSH_PUBLIC_KEY" ]; then
23+
echo "Input ssh_public_key is required!"
24+
exit 1
25+
fi
26+
27+
if [ -z "$INPUT_SSH_PRIVATE_KEY" ]; then
28+
echo "Input ssh_private_key is required!"
29+
exit 1
30+
fi
2431
fi
2532

2633
if [ -z "$INPUT_ARGS" ]; then
@@ -37,26 +44,30 @@ if [ -z "$INPUT_SSH_PORT" ]; then
3744
fi
3845

3946
STACK_FILE=${INPUT_STACK_FILE_NAME}
40-
DEPLOYMENT_COMMAND_OPTIONS="--host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_SSH_PORT"
41-
42-
DEPLOYMENT_COMMAND="docker-compose -f $STACK_FILE"
47+
DOCKER_HOST=ssh://${INPUT_REMOTE_DOCKER_HOST}:${INPUT_SSH_PORT}
48+
DEPLOYMENT_COMMAND="docker compose -f $STACK_FILE"
4349

4450

4551
SSH_HOST=${INPUT_REMOTE_DOCKER_HOST#*@}
4652

47-
echo "Registering SSH keys..."
48-
49-
# register the private key with the agent.
50-
mkdir -p ~/.ssh
51-
ls ~/.ssh
52-
printf '%s\n' "$INPUT_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
53-
chmod 600 ~/.ssh/id_rsa
54-
printf '%s\n' "$INPUT_SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub
55-
chmod 600 ~/.ssh/id_rsa.pub
56-
#chmod 600 "~/.ssh"
57-
eval $(ssh-agent)
58-
ssh-add ~/.ssh/id_rsa
5953

54+
if "$TAILSCALE_SSH"
55+
then
56+
echo "Using Tailscale SSH, Skipping Manual SSH key registeration"
57+
eval $(ssh-agent)
58+
else
59+
echo "Registering SSH keys..."
60+
# register the private key with the agent, when not using Tailscale
61+
mkdir -p ~/.ssh
62+
ls ~/.ssh
63+
printf '%s\n' "$INPUT_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
64+
chmod 600 ~/.ssh/id_rsa
65+
printf '%s\n' "$INPUT_SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub
66+
chmod 600 ~/.ssh/id_rsa.pub
67+
#chmod 600 "~/.ssh"
68+
eval $(ssh-agent)
69+
ssh-add ~/.ssh/id_rsa
70+
fi
6071

6172
echo "Add known hosts"
6273
ssh-keyscan -p $INPUT_SSH_PORT "$SSH_HOST" >> ~/.ssh/known_hosts
@@ -73,9 +84,9 @@ if [ -n "$INPUT_DOCKER_LOGIN_PASSWORD" ] || [ -n "$INPUT_DOCKER_LOGIN_USER" ] |
7384
fi
7485

7586
echo "Command: ${DEPLOYMENT_COMMAND} pull"
76-
${DEPLOYMENT_COMMAND} ${DEPLOYMENT_COMMAND_OPTIONS} pull
87+
${DEPLOYMENT_COMMAND} pull
7788

7889
echo "Command: ${DEPLOYMENT_COMMAND} ${INPUT_ARGS}"
79-
${DEPLOYMENT_COMMAND} ${DEPLOYMENT_COMMAND_OPTIONS} ${INPUT_ARGS}
90+
${DEPLOYMENT_COMMAND} ${INPUT_ARGS}
8091

8192

0 commit comments

Comments
 (0)