Skip to content

Commit 850681e

Browse files
committed
feat: US-016 - Add SSH key-based authentication e2e-docker fixture
1 parent 9d244a8 commit 850681e

7 files changed

Lines changed: 104 additions & 2 deletions

File tree

packages/secure-exec/tests/e2e-docker/dockerfiles/sshd.Dockerfile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ RUN apk add --no-cache openssh \
55
&& echo "testuser:testpass" | chpasswd \
66
&& sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config \
77
&& sed -i 's/^#PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config \
8-
&& mkdir -p /home/testuser/upload \
9-
&& chown testuser:testuser /home/testuser/upload
8+
&& sed -i 's/^#PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config \
9+
&& mkdir -p /home/testuser/.ssh /home/testuser/upload \
10+
&& chown testuser:testuser /home/testuser/.ssh /home/testuser/upload \
11+
&& chmod 700 /home/testuser/.ssh
12+
COPY test_rsa.pub /home/testuser/.ssh/authorized_keys
13+
RUN chown testuser:testuser /home/testuser/.ssh/authorized_keys \
14+
&& chmod 600 /home/testuser/.ssh/authorized_keys
1015
EXPOSE 22
1116
CMD ["/usr/sbin/sshd", "-D", "-e"]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMfgWmy0NURjTyN/z8i5WKaopttj+kg5XK1xHH/wewk+mvcjo85a+SZdCf1+E1CMfINPFrgtTE5E15Ncq9Se3fQ/TvJPI17g7DxDlC0a3sdLP6yHxOTbrXiM1W01yVmiM2cGIFv7ZHOiAqOY8BwdYJ1639VOWJXSJbK8iLKBK6bErNM/KcUSq/s4wzamM0BID1xbTDKYkzRhKaH2oqM1bQ+5ipbTEnVqL+46vxN4qxr7LX16fteAEO6yTexsMT5zrS8dVFVwemBN4Cx16Hsxu0YS9/s3Pr69oxrFCC2hFgaiBUYozKpka5okk3zenIi5GSYcxItA92VK2otGc6P6VB testuser@e2e-docker
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"entry": "src/index.js",
3+
"expectation": "pass",
4+
"services": ["ssh"]
5+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
3+
NhAAAAAwEAAQAAAQEAzH4FpstDVEY08jf8/IuVimqKbbY/pIOVytcRx/8HsJPpr3I6POWv
4+
kmXQn9fhNQjHyDTxa4LUxORNeTXKvUnt30P07yTyNe4Ow8Q5QtGt7HSz+sh8Tk2614jNVt
5+
NclZojNnBiBb+2RzogKjmPAcHWCdet/VTliV0iWyvIiygSumxKzTPynFEqv7OMM2pjNASA
6+
9cW0wymJM0YSmh9qKjNW0PuYqW0xJ1ai/uOr8TeKsa+y19en7XgBDusk3sbDE+c60vHVRV
7+
cHpgTeAsdeh7MbtGEvf7Nz6+vaMaxQgtoRYGogVGKMyqZGuaJJN83pyIuRkmHMSLQPdlSt
8+
qLRnOj+lQQAAA9C1Ezn+tRM5/gAAAAdzc2gtcnNhAAABAQDMfgWmy0NURjTyN/z8i5WKao
9+
pttj+kg5XK1xHH/wewk+mvcjo85a+SZdCf1+E1CMfINPFrgtTE5E15Ncq9Se3fQ/TvJPI1
10+
7g7DxDlC0a3sdLP6yHxOTbrXiM1W01yVmiM2cGIFv7ZHOiAqOY8BwdYJ1639VOWJXSJbK8
11+
iLKBK6bErNM/KcUSq/s4wzamM0BID1xbTDKYkzRhKaH2oqM1bQ+5ipbTEnVqL+46vxN4qx
12+
r7LX16fteAEO6yTexsMT5zrS8dVFVwemBN4Cx16Hsxu0YS9/s3Pr69oxrFCC2hFgaiBUYo
13+
zKpka5okk3zenIi5GSYcxItA92VK2otGc6P6VBAAAAAwEAAQAAAQBl/k80T3pv/Kpoy2sX
14+
zUkTZitQKE/a7rSWHKomPfnoZQXvt4H7oLXux3CEYSjXCl+W6G0nafRUlehcVeueeNK3go
15+
4Wfy99nZRoqSTEQo/EebrREREK/zL7UKTWMwqhJWV9wBTr+CBiq0eit92viy4F77i8u4zW
16+
9AhwP8jBO4YHy5omHX57Q/z7mqTR/aaWftV0KvMsfIfkKqthvsNh6fwwz8ua6P6Y+9Cnaz
17+
h3OVAjAKRHYYjHKPf0gYVXrftGcg1dzpKzvnlNJWyTOJ+UYZvSGSRs5ErA3fJLVeAyo1Lk
18+
c/qznygK8AUCyMD5sjuGYRIu7i5M6Y530LUTWtx7ryF/AAAAgQCTW9Soxl2ON299pW5Htu
19+
/5k4gQC7ILgRare7vRjix9JhGeg7nwzdhblSc24ld5vTSO4ij2sNzp5Z4OzfvDXoDEED/5
20+
lrrTxRyjiQZGRICdnJMHs/yAJEU51HfWhREaR1gChmQ6+28eTy1nbhikGF5m97t8ysBlp1
21+
xW54MZMQdjgwAAAIEA7agaXhh7bH5JTj5X2525bCkk5nGHG4TYTI6SbdduI+2MUYdAdOva
22+
Abv+d9Ysm5bGgJxEsCkYomhbxOfzO46Z/2Dp/Zx6Ll9Y/hgOc+0v87d5xsI2eClIb+L8/c
23+
wyhmn3U7FoKAGIpX4logr/9scPbqMyvqEMDW5zCsbVEX1xLj8AAACBANxGnl/WL5hEVtPm
24+
Giw8jMw6/Gc976F6nBAPRQjRRgWya3rpU8jGay4C8jyIdC+T068kFZGVuIl/juT3Egjr1A
25+
6dHg+da0zGEYtqSb8WIobQIFJ8bKEvW2Ov9SiRHuT2fxYN8vPG2xV7/bDO9oQTf0XIGL4p
26+
efBL/B3BBc1A4Ux/AAAAE3Rlc3R1c2VyQGUyZS1kb2NrZXIBAgMEBQYH
27+
-----END OPENSSH PRIVATE KEY-----
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMfgWmy0NURjTyN/z8i5WKaopttj+kg5XK1xHH/wewk+mvcjo85a+SZdCf1+E1CMfINPFrgtTE5E15Ncq9Se3fQ/TvJPI17g7DxDlC0a3sdLP6yHxOTbrXiM1W01yVmiM2cGIFv7ZHOiAqOY8BwdYJ1639VOWJXSJbK8iLKBK6bErNM/KcUSq/s4wzamM0BID1xbTDKYkzRhKaH2oqM1bQ+5ipbTEnVqL+46vxN4qxr7LX16fteAEO6yTexsMT5zrS8dVFVwemBN4Cx16Hsxu0YS9/s3Pr69oxrFCC2hFgaiBUYozKpka5okk3zenIi5GSYcxItA92VK2otGc6P6VB testuser@e2e-docker
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "e2e-docker-ssh2-key-auth",
3+
"private": true,
4+
"type": "commonjs",
5+
"dependencies": {
6+
"ssh2": "1.17.0"
7+
}
8+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
const { Client } = require("ssh2");
2+
const fs = require("fs");
3+
const path = require("path");
4+
5+
async function main() {
6+
const privateKey = fs.readFileSync(
7+
path.join(__dirname, "..", "keys", "test_rsa"),
8+
);
9+
10+
const result = await new Promise((resolve, reject) => {
11+
const conn = new Client();
12+
13+
conn.on("ready", () => {
14+
conn.exec("echo hello-from-key-auth && whoami", (err, stream) => {
15+
if (err) return reject(err);
16+
17+
let stdout = "";
18+
let stderr = "";
19+
20+
stream.on("data", (data) => {
21+
stdout += data.toString();
22+
});
23+
stream.stderr.on("data", (data) => {
24+
stderr += data.toString();
25+
});
26+
stream.on("close", (code) => {
27+
conn.end();
28+
resolve({
29+
connected: true,
30+
authMethod: "publickey",
31+
code,
32+
stdout: stdout.trim(),
33+
stderr: stderr.trim(),
34+
});
35+
});
36+
});
37+
});
38+
39+
conn.on("error", reject);
40+
41+
conn.connect({
42+
host: process.env.SSH_HOST,
43+
port: Number(process.env.SSH_PORT),
44+
username: "testuser",
45+
privateKey,
46+
});
47+
});
48+
49+
console.log(JSON.stringify(result));
50+
}
51+
52+
main().catch((err) => {
53+
console.error(err.message);
54+
process.exit(1);
55+
});

0 commit comments

Comments
 (0)