forked from JJimenezAl/Linux
-
Notifications
You must be signed in to change notification settings - Fork 0
/
support-service.txt
185 lines (170 loc) · 7.51 KB
/
support-service.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
#
# This is the HPCNow! Remote Support Service script which allows to create a
# permanent SSH tunnel to allow HPCNow staff to get access to a remote cluster.
#
# Copyright (C) 2019 HPCNow!
#
# This program is distributed under the "Attribution-NonCommercial-NoDerivatives
# 4.0 International". Please, review the license at:
# https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode
#
# Script developed and maintained by Jordi Blasco <jordi.blasco@hpcnow.com>
# For more information, visit the official website: www.hpcnow.com
#
readonly username='nasertic'
readonly port='22100'
function get_os_distro()
{
# OS release and Service pack discovery
if ! [[ -x "$(command -v lsb_release)" ]]; then
echo 'Error: lsb_release is not installed.'
echo 'Consider installing: lsb-release (ubuntu/debian/suse), redhat-lsb-core (rhel/centos).'
exit 1
fi
local lsb_dist=$(lsb_release -si 2>&1 | tr '[:upper:]' '[:lower:]' | tr -d '[[:space:]]')
local dist_version=$(lsb_release -sr 2>&1 | tr '[:upper:]' '[:lower:]' | tr -d '[[:space:]]')
local dist_version_major=$(echo ${dist_version} | cut -d. -f1)
local dist_version_minor=$(echo ${dist_version} | cut -d. -f2-5)
# Special case redhatenterpriseserver
if [[ "${lsb_dist}" == "redhatenterpriseserver" ]]; then
lsb_dist='redhat'
fi
if [[ "${lsb_dist}" == "suselinux" || "${lsb_dist}" == "opensuseproject" ]]; then
lsb_dist='suse'
fi
if [[ -z "${lsb_dist}" ]]; then
lsb_dist=$(uname -s)
else
export OS_VERSION=${dist_version}
export OS_VERSION_MAJOR=${dist_version_major}
export OS_VERSION_MINOR=${dist_version_minor}
fi
export OS=$lsb_dist
}
function install_software()
{
local pkgs="$1"
case "$OS" in
debian|ubuntu)
INSTALLER="apt-get -y install"
apt-get -y update
;;
rhel|redhat|centos)
INSTALLER="yum -y install"
;;
suse|sle[sd]|opensuse)
INSTALLER="zypper -n install"
;;
*)
echo "This distribution is not supported."
exit 0
;;
esac
$INSTALLER $pkgs
}
# Check user privileges
if [[ $(id -u) -ne 0 ]] ; then
echo "This script must be run as root."
echo "Use 'sudo su -' or prepend your command with sudo: 'sudo hpcnow-support-tunnel.sh'."
exit 0
fi
# Install autossh
echo "Installing the following required software packages: autossh tmux byobu vim git"
get_os_distro
install_software "autossh tmux byobu vim git"
# Transfer the SSH private key to the /root/.ssh folder
echo "Transferring SSH key"
if [[ ! -e /root/.ssh ]]; then
mkdir -p /root/.ssh
chown -R root:root /root/.ssh
fi
echo '
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
' > /root/.ssh/id_rsa_hpcnow
chmod 400 /root/.ssh/id_rsa_hpcnow
chown root:root /root/.ssh/id_rsa_hpcnow
# Create the remote SSH Tunnel
echo "Create the hpcnow-support-tunnel.service"
echo "
[Unit]
Description=AutoSSH tunnel service for HPCNow support
After=network.target
[Service]
Environment='AUTOSSH_GATETIME=0'
ExecStart=/usr/bin/autossh -M 0 -o 'StrictHostKeyChecking=no' -o 'ExitOnForwardFailure=yes' -o 'ServerAliveInterval=30' -o 'ServerAliveCountMax=3' -NR $port:localhost:22 $username@sandbox.hpcnow.com -p 22022 -i /root/.ssh/id_rsa_hpcnow
ExecStop=/bin/kill \$MAINPID
[Install]
WantedBy=multi-user.target
" > /etc/systemd/system/hpcnow-support-tunnel.service
# Setup the daemon
echo "Setting up the daemon"
systemctl daemon-reload
echo "Do you want to initiate the remote tunnel? (Y/n)"
read -t 20 answer
if [[ $answer =~ ^([yY][eE][sS]|[yY])$ ]]; then
echo "Initiating HPCNow! Support Tunnel Service"
systemctl start hpcnow-support-tunnel.service
else
echo "Ok. You can initiate this service later with the following command:"
echo "systemctl start hpcnow-support-tunnel.service"
fi
echo "Do you want to enable this daemon at the boot time? (Y/n)"
read -t 20 answer
if [[ $answer =~ ^([yY][eE][sS]|[yY])$ ]]; then
echo "Enabling HPCNow! Support Tunnel Service"
systemctl enable hpcnow-support-tunnel.service
else
echo "Ok. You can enable this service at the boot time with the following command:"
echo "systemctl enable hpcnow-support-tunnel.service"
fi