Как rsync может работать с ssh, когда ssh Читает и пишет свой собственный?

Как предложил Мюррей, вы можете создать другой файл (не / etc / passwd ), а затем, как описано здесь , вы можете выполнить следующие действия, чтобы создать Basic Пользователи аутентификации:

htpasswd -c /path/to/your/file username

вам будет предложено ввести пароль, который будет зашифрован и сохранен в файле, определенном выше. Обратите внимание , что если вы хотите создать другого пользователя (более одного), вам нужно не забыть опустить параметр -c :

htpasswd /path/to/your/file username

В противном случае ваш файл будет создан заново, и вы перезапишете ранее добавленных пользователей

htpasswd --help

-c Создать новый файл.

Кроме того, учтите, что вы можете решить, какой алгоритм шифрования использовать для шифрования пароля:

-m Принудительно использовать MD5-шифрование пароля.

-d Принудительное шифрование пароля с помощью CRYPT (по умолчанию).

-p Не шифровать пароль (открытым текстом).

-s Принудительное шифрование пароля SHA.

0
08.08.2018, 14:48
1 ответ

SSH запрашивает и считывает секреты входа через отдельный файловый дескриптор; он обязательно открывает текущий TTY.

Большинство программ позаботятся о том, чтобы прочитать секреты входа в систему с TTY, чтобы они могли предотвратить отображение пароля, временно отключив «эхо» на TTY. Я ожидаю, что они обязательно напишут приглашение на тот же TTY, ради надежности.

$ SSH_AUTH_SOCK= strace -f rsync x brick:
...
[pid 26255] openat(AT_FDCWD, "/dev/tty", O_RDWR) = 4
[pid 26255] ioctl(4, TCGETS, {B38400 opost isig icanon echo...}) = 0
[pid 26255] ioctl(4, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost isig icanon -echo...}) = 0
...
[pid 26255] write(4, "Enter passphrase for key '/home/"..., 51Enter passphrase for key '/home/alan/.ssh/id_rsa': ) = 51
[pid 26255] read(4, "", 1)              = 0
[pid 26255] write(4, "\n", 1
)           = 1
[pid 26255] ioctl(4, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost isig icanon echo...}) = 0
...

SSH напечатал сообщение об ошибке в стандартную ошибку (открыть файл номер 2 ), а не в стандартный вывод (открыть файл номер 1 ), который rsync будет использовать для своего протокола.

[pid 26255] write(2, "alan@brick.carrier.duckdns.org: "..., 64alan@brick.carrier.duckdns.org: Permission denied (publickey).
) = 64
[pid 26255] exit_group(255)             = ?
0
28.01.2020, 04:15

Теги

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