выполнить cat через ssh, отправить текст или файл через ssh

выполнить cat через ssh, отправить текст или файл через ssh

Приветствую Я создаю скрипт для автоматизации отправки открытых ключей, но я не могу отправить свой файл или переменную через ssh ни с помощью "echo, ни с помощью cat"

решение1

Если вы хотите отправить файл на удаленный сервер, вы можете использовать scp.

Из man scp:

scp копирует файлы между хостами в сети. Он использует ssh(1) для передачи данных, использует ту же аутентификацию и обеспечивает ту же безопасность, что и ssh(1). В отличие от rcp(1), scp запросит пароли или парольные фразы, если они необходимы для аутентификации.

Основное использование:

scp user@origin:/path/to/file user@target:/path/to/file

Предположим, вы хотите перенести example.txt из текущего каталога на удаленный каталог SERVERс тем же именем в папке example, выполнив аутентификацию как root:

scp example.txt root@SERVER:/example/example.txt

решение2

Для передачи открытых ключей на удаленные сервера существует специальная утилитаssh-копия-id.

Выше вы найдете скрипт, который можно использовать для автоматизации этой задачи:

#!/bin/sh
while read server ; do
   timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>

PS: Замените константы между <> своими собственными значениями.

решение3

Вы можете использовать sshpassв своем скрипте доступ к серверу без ввода пароля каждый раз, например:

sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER

также вы можете использовать -fдля записи пароля в файл, если вы не хотите писать его в командной строке (он в открытом виде в обоих случаях) для списка серверов, называемого servers.list

for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done

Связанный контент