내 개발 컴퓨터는 Fedora(36)에서 실행됩니다.
최근 원격 서버(CentOS 7)에 파일을 scp하려고 시도했는데 알 수 없는 오류 메시지가 표시되었습니다.
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에서 이전 버전으로 폴더를 복사하는 작업이 실패합니다. 이러한 경우 권장되는 수정 방법은 절대 경로를 제공하는 것입니다.
따라서 경로를 수동으로 확장해야 한다는 점을 설명합니다. 짜증나지만 적어도 이제 우리는 그 이유를 알고 있습니다 :)