Проблему можно решить, установив пакет 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
Команда
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
Для cat
, если имя файла не указано, он должен скопировать стандартный ввод в стандартный вывод.
>>
называется оператором перенаправления вывода.
Просто cat >> filename
будет добавлять данные, поступающие на стандартный ввод, к файлу "filename".
В вашем примере:cat "content_to_be_added"
"контент _- _должен быть _добавлен" на самом деле не контент, это имя входного файла.