Если во втором поле на входе нет длинного номера последовательности, попробуйте:
$ sed -e 's|^[^,]*|#000000000&|;s|#[^,]*\(.\{9\}\),|\1,|;s|\([0-9]\{3\}\)|\1/|g;s|/\([^0-9]\)|\1|;s|/$||' file
000/012/345,1s4c3v6s3nh6
123/456/789,9h5vgbdx34dc
000/000/012,7h4f45dcvbgh
001/234/567,09klijnmh563
Объяснение
s|^[^,]*|#000000000&|
: мы сопоставляем все от начала до конца ,
, заменяем его на создатель #
и n чисел 0, где n - это длина, которую мы хотим проложить.
s|#[^,]*\(.\{9\}\),|\1,|
: мы сопоставляем все от маркера к первому ,
, сохраняем только последние 9 символов до ,
, отбрасываем остальные.
s|\([0-9]\{3\}\)|\1/|g
: добавляем /
каждые 3 последовательности цифр.
s|/\([^0-9]\)|\1|;s|/$||
: если после /
нет числа или /
находится в конце строки, мы удаляем его.
или проще с помощью perl
:
$ perl -F',' -anle '
$F[0] = sprintf "%09s", $F[0];
$F[0] =~ s|.{3}|$&/|g;
chop $F[0];
print join ",",@F;
' file
000/012/345,1s4c3v6s3nh6
123/456/789,9h5vgbdx34dc
000/000/012,7h4f45dcvbgh
001/234/567,09klijnmh563
Попробуйте с разрешением 600 для файла authorized_keys на удаленном хосте. 644 тоже подойдет, но он не должен быть групповым и/или другим, доступным для записи.
Полезная ссылка :
Ваш вывод ssh -vv tom@remoteserver
содержит:
debug1: Offering public key: /home/bob/.ssh/id_rsa
В этот момент клиент нашел ваш закрытый ключ и пытается с ним аутентифицироваться. - Однако сервер отказывается это сделать. Причина может быть найдена в лог-файле сервера.
Дикая догадка: у вас проблема с разрешением файлов.
Дважды проверьте правильность разрешений на сервере ls -la ~/.ssh
. Еще лучше: Используйте ssh-copy-id
для копирования открытого ключа на удаленный сервер. Он позаботится о правильных разрешениях.
man sshd_config
говорит:
StrictModes
Specifies whether sshd(8) should check file modes and ownership of the
user's files and home directory before accepting login. This is nor‐
mally desirable because novices sometimes accidentally leave their
directory or files world-writable. The default is ``yes''. Note that
this does not apply to ChrootDirectory, whose permissions and ownership
are checked unconditionally.
В основном только сам пользователь должен иметь возможность читать/записывать на ~/.ssh
.