ssh-keygen -t rsa -b 2048 -C "Comment - VDS Name" -f ~/.ssh/filename
Сгенерируются два файла с ключами: filename
(приватный ключ) и filename.pub
(публичный ключ).
ssh -i filename root@123.45.67.8
adduser username
# Add `username` to `sudo` group
usermod -aG sudo username
# Switch to `username`
su - username
Добавим ключ ssh
новому пользователю. Для этого, заходим под его именем по ssh
на сервер, и далее:
cd ~
mkdir -p .ssh
# 700 - all rights for current user, none for others.
chmod 700 .ssh
echo "<PUBLIC_KEY>" >> ~/.ssh/authorized_keys
Можно отключить возможность входа по ssh
по логину и паролю, оставив только вход по ключу. Для этого, на сервере нужно открыть файл конфигурации ssh
:
sudo nano /etc/ssh/sshd_config
Стрелкой вниз домотайте до строки с PasswordAuthentication
и вместо yes напишите no:
После этого перечитайте конфигурацию сервера sshd
(сервер ssh daemon):
sudo systemctl reload sshd.service
Теперь можно будет зайти только с использованием ключа:
Для входа на сервер с ключом, указываем флаг и полный путь к ключу:
ssh -i ~/.ssh/keyname user@123.45.67.8
Чтобы больше не указывать имя ключа при подключении, необходимо сделать следующее:
- Создайте в папке
~/.ssh
файл с именемconfig
:
touch ~/.ssh/config && chmod 600 ~/.ssh/config
- Скопируйте приватный и публичный ключи в папку ~/.ssh/:
chmod 600 ~/.ssh/timeweb*
cp -fv timeweb timeweb.pub ~/.ssh/
- Отредактируйте файл
~/.ssh/config
, написав следующие строки:
Host <ip_address_of_your_machine>
User <your_remote_system_user_name>
IdentityFile ~/.ssh/timeweb
- Подключитесь по
ssh
без указания имени ключа:
ssh <your_remote_system_user_name>@<ip_address_of_your_machine>
python3 -V
sudo apt install python3-virtualenv
mkdir ~/workspace
cd ~/workspace
python3 -m virtualenv -p python3 .venv
source .venv/bin/activate
# or `. .venv/bin/activate`
pip install flask
Всё, что запускается на localhost
(127.0.0.1
) доступно только изнутри машины. Поэтому приложение Flask нужно запускать с указанием IP адреса VDS (если не указывать порт, по умолчанию запустится на 80):
flask run -h 123.45.67.8
# or
gunicorn --bind 0.0.0.0:5000 app:app --daemon
https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/
Шпаргалка по rsync
- Синхронизация каталогов dir1 и dir2 на одной машине:
rsync -a dir1 dir2
- Синхронизация удалённой системы:
rsync -a local_dir username@remote_host:remote_dir
- В обратную сторону:
rsync -a username@remote_host:remote_dir local_dir
- Использование с ключом:
rsync -e 'ssh -i timeweb' -Paz username@remote_host:remote_dir local_dir
Опции:
−r — рекурсивная синхронизация.
−a — режим архива, эквивалент -rlptgoD.
−z — сжатие данных.
−P — показать прогресс синхронизации.
−e — используется для задания параметров при подключении через SSH.
Полный список опций можно найти в документации.
Docker Setup
Docker Setup on Ubuntu
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update apt-cache policy docker-ce sudo apt install docker-ce sudo systemctl status docker
📂 DevOps | Последнее изменение: 06.12.2023 14:45
Link to original
📂 DevOps | Последнее изменение: 06.12.2023 14:45