Обеспечьте получение команд SFTP из файла сценария, но сохраните интерактивный вход с паролем.

Исправление для этого (, найденное путем догадок ), заключалось в выполнении следующих команд в chroot.

rm /dev/ptmx
ln -s /dev/pts/ptmx /dev/ptmx

Я не уверен на 100%, но я считаю, что причина, по которой это необходимо, заключается в том, что lxc использует «режим нескольких экземпляров» для /dev/pts. Согласно документации наhttps://github.com/torvalds/linux/blob/v4.4/Documentation/filesystems/devpts.txt

If CONFIG_DEVPTS_MULTIPLE_INSTANCES=y and 'newinstance' option is specified, the mount is considered to be in the multi-instance mode and a new instance of the devpts fs is created. Any ptys created in this instance are independent of ptys in other instances of devpts. Like in the single-instance mode, the /dev/pts/ptmx node is present. To effectively use the multi-instance mode, open of /dev/ptmx must be a redirected to '/dev/pts/ptmx' using a symlink or bind-mount.

Глядя на более поздние версии этого файла, кажется, что это может не понадобиться для более поздних ядер.

1
16.09.2019, 10:13
1 ответ

Вы можете передать команды sftpбез пакетного режима, используя перенаправление ввода:

sftp username@example.com < commands.txt

Таким образом, вы по-прежнему можете использовать интерактивную аутентификацию по паролю.

$ sftp username@example.com < commands.txt
username@example.com's password:
Connected to username@example.com.
sftp> get -p source_file dest
Fetching /path/source_file to dest
/path/source_file                                        100% 9474   975.4KB/s   00:00
sftp>
2
27.01.2020, 23:30

Теги

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