Я пытаюсь скопировать файлы между двумя RPI в одной сети. Открытый ключ установлен в соответствии с инструкциями во многих руководствах. При прямом вызове команды ssh или scp из терминала пароль не запрашивается. При запуске той же команды из скрипта bash запрашивается пароль.

Я озадачен, потому что большинство людей, похоже, имеют проблемы с запуском ssh/scp с помощью ключа - но это работает отлично. Это похоже на разницу между терминалом и bash.

Скрипт выглядит так:

сценарий:

#!/bin/bash

sudo scp /home/pi/file.txt pi@192.168.178.xx:/home/pi/foo/

Выполнено

$sudo ./script

Я ценю вашу помощь!

2 ответа2

0

Проблема со всеми учебниками заключается в том, что они могут следовать различным методам. Что я обычно делаю, так это следующее.

Поскольку вы используете sudo (согласно редактированию вопроса) для выполнения вашего скрипта, ваш скрипт будет работать как root. Не как ваш собственный пользователь.

Это означает, что вам нужно добавить открытый ключ root (который находится в /root/.ssh/id_rsa.pub) из strawberry в authorized_keys пользователя root на `blueberry ass!

Предположим, у нас есть два пи, назовем их strawberry и blueberry . Strawberry - это ssh-клиент, blueberry - это сервер. должен быть заменен вашим логином.

По strawberry:

cd
mkdir .ssh
chown <my name> .ssh
chmod 700 .ssh
ssh-keygen
cp .ssh/id_rsa.pub /tmp/nice_filename
sudo -s
cd ~root
mkdir .ssh
chown root .ssh
chmod 700 .ssh
ssh-keygen
cat .ssh/id_rsa.pub >> /tmp/nice_filename
chmod a+r /tmp/nice_filename
exit

scp /tmp/nice_filename blueberry: # and enter the password for blueberry

ssh-keygen может попросить пароль. Если вы действительно полностью доверяете своей среде, вы можете оставить пароль пустым. Если вы не оставите пароль пустым, вам потребуется предоставить этот пароль, чтобы разблокировать ключ.

Итак, обычно я просто вход, оставляя пароль пустым.

По blueberry:

cd
mkdir .ssh
chown <my name>  .ssh
chmod 700 .ssh
cat nice_filename >> .ssh/authorized_keys
chown <my name>  .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
sudo -s
mkdir ~root/.ssh
chown root.root ~root/.ssh
chmod 700 ~root/.ssh
cat nice_filename >> ~root/.ssh/authorized_keys
chown root ~root/.ssh/authorized_keys
chmod 600 ~root/.ssh/authorized_keys

Вместо cat id_rsa.pub >> .ssh/authorized_keys , вы можете mv id_rsa.pub .ssh/authorized_keys , но вы должны делать это только в том случае, если это действительно ваш первый ключ или вы хотите удалить существующие ключи.

Далее по strawberry:

ssh blueberry ls /tmp
ssh root@blueberry ls /usr
sudo ssh blueberry ls /var

и вуаля!

0

Вы путаетесь во время использования sudo . Почему вы используете sudo , не ясно. По сути, вы просто хотите сделать:

сценарий:

#!/bin/bash
scp /home/pi/file.txt pi@192.168.178.xx:/home/pi/foo/

и запустить скрипт как

./script

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .