У меня есть скрипт, который использует SCP для извлечения файла с удаленного хоста Linux на AWS.После того, как один и тот же код выполнялся по ночам в течение 6 месяцев без проблем, сегодня он начал работать с ошибкой protocol error: filename does not match request
.Я воспроизвел проблему с некоторыми более простыми именами файлов ниже:
$ scp -i $IDENT $HOST_AND_DIR/"foobar" .
# the file is copied successfully
$ scp -i $IDENT $HOST_AND_DIR/"'foobar'" .
protocol error: filename does not match request
# used to work, i swear...
$ scp -i $IDENT $HOST_AND_DIR/"'foobarbaz'" .
scp: /home/user_redacted/foobarbaz: No such file or directory
# less surprising...
Причиной для моих одинарных кавычек было то, что я изначально брал файл с пробелами в имени.Чтобы справиться с пробелами, я делал $HOST_AND_DIR/"'foo bar'"
в течение многих месяцев, но начиная с сегодняшнего дня, он будет принимать только $HOST_AND_DIR/"foo\ bar"
.Итак, моя проблема исправлена , но мне все еще интересно, что происходит.
Я погуглил сообщение об ошибке, но я не вижу никаких реальных упоминаний о нем, что удивляетme.
Оба задействованных хоста имеют OpenSSL 1.0.2g
в выводе ssh -v localhost
, а bash --version
говорит GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Есть идеи?