mirror of
https://github.com/gravitational/teleport.git
synced 2026-11-01 05:27:24 +08:00
The token value is provided via the HTTP request and fed into the node join script. This could allow an attacker to generate a node-join script with malicious code included. Fix this by validating that tokens are valid and exist in the backend. Additionally, we recently added the ability to specify labels via the node-labels query parameter, which is also user-controlled. Since this functionality was never integrated in the UI, we remove it here and will add an alternative implementation in the future. Also use single quotes in script to prevent expansion
Automated node join script for Teleport
This is an automated node join script for Teleport, which does the following:
- checks for an existing Teleport process, data directory, config file or Teleport binaries (and provides details how to clean up if any of these are present)
- tests connectivity to the given Teleport server host and port
- using either
nc,telnetor/dev/tcpif available - if none of these are available this step is skipped
- using either
- detects OS, distribution, architecture and appropriate Teleport package format, then downloads this package to a temporary directory and installs it
tarfor tarball extraction if neededdpkgfor .deb installsdnf,yumorrpmfor .rpm installs
- generates a Teleport config to set up a node and writes it to disk
- installs and starts Teleport
- via
systemdon Linux - via
launchctlon MacOS
- via
- cleans up downloaded archives afterwards
Things it doesn't do (yet):
- validate the checksum of the downloaded Teleport artifact against the published checksum
Supported operating systems, architectures and distributions
-
Linux
- Architectures
- i386
- x86_64
- armv7l
- aarch64 (no Teleport binaries available yet)
- Any Debian-based distribution
- Debian 8+
- Ubuntu 18.04+
- uses
.debpackage
- uses
- Any CentOS-based distribution
- CentOS 6+*
- RHEL 6+*
- CentOS 6 and RHEL 6 will use the special
centos6tarball package to handle the lower glibc version.
- CentOS 6 and RHEL 6 will use the special
- Fedora 27+
- Amazon Linux 2+
- uses
.rpmpackage
- uses
- Any other distribution
- uses
.tar.gztarball package
- uses
- Architectures
-
MacOS
- Architectures
- x86_64
- aarch64 (no Teleport binaries available yet)
- MacOS 10.12+
- uses
.tar.gztarball package
- uses
- Architectures
Arguments
Required arguments:
| Flag | Description | Example value | Required |
|---|---|---|---|
-v |
Teleport version | 4.3.5 |
yes |
-h |
Hostname for the Teleport auth/proxy server | teleport.example.com |
yes |
-j |
A valid node join token | ool7ahpo4thohmeuS1gieY7laiwae7oo |
yes |
-c |
The CA pin hash of the cluster being joined | sha256:6abdd3a143a230fd31c9706d668bba3ee25a6e0eec54fcd69680c1ec0530fe9c |
yes |
-p |
Port connect to on the Teleport auth/proxy server | 3080 |
no |
If any of these arguments is not provided via CLI flags, they will be requested interactively at runtime.
Optional extra flags:
| Flag | Description | Example value | Required |
|---|---|---|---|
-q |
Enable quiet mode | n/a | no |
-l |
Write logs to file | /var/log/teleport-node-installer.log |
no |
Example usage
$ bash ./install.sh \
-j ool7ahpo4thohmeuS1gieY7laiwae7oo \
-c sha256:6abdd3a143a230fd31c9706d668bba3ee25a6e0eec54fcd69680c1ec0530fe9c \
-h teleport.example.com \
-p 3080 \
-v 4.3.5