.png)
Мой компьютер для разработки работает на Fedora (36).
Недавно я попытался скопировать файл на удаленный сервер (CentOS 7) и получил загадочное сообщение об ошибке:
scp: dest open(""): Такого файла или каталога нет
Команда выглядит примерно так:
scp -C foo.ext user@internal-vpn-ip:~/
Ничего необычного, делал это много раз за эти годы без проблем. Странно, подумал я, все работает и работает, но scp не может найти удаленный путь. Немного поэкспериментировав, я расширил удаленный путь пользователя:
scp -C foo.ext user@remote-ip:/path/to/user/
и вуаля, это сработало!
Вопрос в том, почему~Расширение пути больше не работает?
решение1
Похоже, в RedHat 9+ SCP теперь использует SFTP.
вУстаревание OpenSSH SCPна странице приведен список несовместимостей и предостережений относительно систем до RedHat 9 и RedHat 9+, включая этот соответствующий фрагмент.
Другое различие между протоколами заключается в расширении обработки пути на основе ~. OpenSSH 8.7 и более поздние версии поддерживают специальное расширение SFTP для работы с этим расширением. К сожалению, это расширение не поддерживается в более ранних версиях, поэтому копирование папок из новой версии RHEL в старую завершится ошибкой, если используется обработка пути ~. В таких случаях рекомендуемым исправлением является предоставление абсолютных путей.
Вот и все, теперь понятно, почему нужно вручную расширять путь. Раздражает, но теперь хотя бы понятно, почему :)