Вам не нужен флаг -
(выравнивание по левому краю -), по умолчанию выравнивание по правому краю -выравнивание:
awk '{printf "%5s %s\n",$1,$2}' a.txt
Я удалил все ключи и попытался пройти всю процедуру заново. Это сработало, когда я создал ключи без sudo
, как в :
user@home-machine ~ $ ssh-keygen -t ed25519 -C "my@email"
Спасибо @Panki за подсказку. Не помню, почему я использовал sudo
для создания ключей.
user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864
Здесь вы начинаете ssh-agent
как user
. Это инициализирует переменную среды SSH_AUTH_SOCK
, которая используется другими инструментами SSH для поиска сокета Unix для агента.
user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.
И здесь вы вызываете ssh-add
как root
. Если вы явно не настроили sudo
для передачи переменной среды SSH_AUTH_SOCK
через переход sudo, по умолчанию она не будет передавать ее в среду root
.
Без переменной окружения команда ssh-add
не сможет найти сокет ssh-agent
, так как он расположен в подкаталоге -со случайным -именем (, обычно/tmp/ssh-<random_alphabet_soup>/agent.<number>
). Сокет и каталог, в котором он находится, также доступны только для оригинального user
, но обычно это не проблема для root.
Если вы хотите, чтобы агент работал через переход sudo
конкретно для этого пользователя, вам нужно добавить что-то подобное в ваш файл /etc/sudoers
:
Defaults:user env_keep+=SSH_AUTH_SOCK
(Конечно, замените user
реальным именем пользователя.)
Если вы хотите, чтобы это работало для всех пользователей при переходе на root с помощью sudo
, вы можете сделать это следующим образом:
Defaults>root env_keep+=SSH_AUTH_SOCK