Показаны сообщения с ярлыком SSH. Показать все сообщения
Показаны сообщения с ярлыком SSH. Показать все сообщения

вторник, 23 июля 2019 г.

Linux nginx configs backup

Буду использовать отдельно созданный для этого ssh key из специально созданной папки

mkdir -p /root/sshkey-for-nginx-backup
chmod 0600 /root/sshkey-for-nginx-backup

ssh-keygen -t rsa -b 4096 -f /root/sshkey-for-nginx-backup/id_rsa -C sshkey-for-nginx-backup@hostname

copy ssh pub key to remote server

apt install zstd

#!/bin/bash

function logging {
    echo $(date +%F_%H-%M) "______" "$1"
}

current_date=`date +%F`

tar -cf - /etc/nginx /etc/letsencrypt | zstd -19 | ssh -p 2202 -i /root/sshkey-for-nginx-backup/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no hostname-backup@1.2.3.4 "cat - > /var/www/backup/hostname/nginx.hostname.$current_date.tar.zst" && logging "Backup was sent successfully ..." || logging "Backup wasn't created ..."

Скрипт будет запускаться по крону каждый день

#Backup nginx configs to backup server
20 5 * * * /usr/local/bin/backup-nginx-config.sh >> /var/log/backup-nginx-config.log 2>&1

понедельник, 15 июля 2019 г.

Python запуск команд на удаленном сервере over SSH

Установка

pip3 install paramiko

Пример проверки есть ли уже пользователь на удаленном компьютере:

import paramiko

host = '10.81.156.13'
user = 'root'
#файл может находится в любом удобном месте
keyfilename = '/root/ssh_key_for cheking/id_rsa'
create_user = "newuser"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
k = paramiko.RSAKey.from_private_key_file(keyfilename)
ssh.connect(hostname=host, port=22, username=user, pkey=k)

cmd = 'grep -c -w ' + create_user + ' /etc/passwd'

ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd)

result_ssh = ssh_stdout.readlines()
result_ssh = "".join(result_ssh)
#print(result_ssh[0])

if result_ssh[0] == '0' and result_ssh[0].isdigit():
    print("user not exists and it will be created")



четверг, 27 июня 2019 г.

Python generate ssh key for server ssh access

Установка

pip3 install pycryptodome

Пример:

from os import chmod
from Crypto.PublicKey import RSA

key = RSA.generate(4096)
with open("id_rsa", 'wb') as content_file:
    chmod("id_rsa", 0o600)
    content_file.write(key.exportKey('PEM'))
pubkey = key.publickey()
with open("id_rsa.pub", 'wb') as content_file:
    chmod("id_rsa.pub", 0o600)
    content_file.write(pubkey.exportKey('OpenSSH'))

exportKey('PEM') exportKey('OpenSSH') PEM формат нужен для приватного ключа, OpenSSH - для паблик ключа.
В chmod permissions указаны в соответствии python-дружественным синтаксисом 0o600. 

вторник, 29 сентября 2015 г.

Linux SSH подключение по сертификату

Мануалов много, эта заметка для понимания:
если я хочу подключаться с сервера А на сервер Б по сертификату, то я создаю пару закрытый открытый ключ на сервере А и копирую открытый ключ (ssh-copy-id) на сервер Б.

Описание параметров настройки SSH