Нужна помощь в понимании команды оболочки с каналами, перенаправлениями и удаленными подключениями

Проблему можно решить, установив пакет dhclient. В последний раз включите DNS-серверы Google, запустив в последний раз:

sudo su "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"

Затем запустите этот коктейль из команд:

sudo apk update && sudo apk upgrade && sudo apk add dhclient

Чтобы получить свежие пакеты и установить dhclient.Затем настройте /etc/dhcp/dhclient.confи поставьте следующее:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

prepend domain-name-servers 8.8.8.8, 8.8.4.4;

И перезапустите сеть:

sudo rc-service networking restart

При желании вы можете подтвердить, что работает, если вы запустите:

sudo reboot

В любом случае вы можете подтвердить, что dns разрешается, пропинговав google.

ping google.com
0
05.05.2020, 16:46
2 ответа

Команда

cat >> ~/.ssh/authorized_keys

читает со стандартного ввода (, так как catне было указано имя файла для чтения из )и добавляет к именованному файлу. Оператор перенаправления >>открывает целевой файл для добавления . Использование >вместо >>привело бы к усечению (очистки )целевого файла перед записью данных.

Откуда берутся данные о стандартном вводе этой удаленной команды cat? Стандартный входной поток наследуется catот удаленной оболочки. Удаленная оболочка наследует стандартный поток ввода от ssh. Стандартный ввод для sshпоступает по конвейеру от локальной команды cat, которая считывает файл ~/.ssh/id_rsa.pub.


Локальный catне нужен в вашем конвейере:

ssh git@remote-server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

Обратите внимание, однако, что если mkdirдействительно создает каталог, этот каталог должен иметь правильные разрешения для sshдля правильной работы:

ssh git@remote-server 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

Или вы можете просто отказаться от добавления данных:

ssh git@remote-server 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
6
28.04.2021, 23:16

Для cat, если имя файла не указано, он должен скопировать стандартный ввод в стандартный вывод.

>>называется оператором перенаправления вывода.

Просто cat >> filenameбудет добавлять данные, поступающие на стандартный ввод, к файлу "filename".

В вашем примере:cat "content_to_be_added""контент _- _должен быть _добавлен" на самом деле не контент, это имя входного файла.

0
28.04.2021, 23:16

Теги

Похожие вопросы