파일에서 읽은 경로를 사용하여 SSH 키 파일의 내용을 읽는 방법은 무엇입니까?

파일에서 읽은 경로를 사용하여 SSH 키 파일의 내용을 읽는 방법은 무엇입니까?

다음과 같은 파일에 있는 지정된 경로를 사용하여 SSH 키의 내용을 읽어야 합니다. 내 SSH 개인 키는 다음과 같습니다.~/.ssh/firstname.lastname

우분투에서 터미널을 호출 하면 cat ~/.ssh/firstname.lastname예상된 결과를 얻습니다. 그러나 텍스트 파일에서 SSH 키의 경로를 얻으면 cat: '~/.ssh/firstname.lastname': No such file or directory.

path_to_key.txt예를 들어, 한 줄이 포함된 파일이 있습니다 ~/.ssh/firstname.lastname.

따라서 터미널에서 이를 호출하면 cat $(cat path_to_key.txt)위에서 언급한 오류 메시지가 반환됩니다.

모든 파일은 동일한 디렉터리에 있으며 해당 디렉터리에서도 호출이 발생합니다.

나는 왜 이렇게 '고양이'가 될 수 없는 걸까?

답변1

고양이는 모두 작동했지만 물결표( ~)는 명령줄에서 일반적으로 처리되는 것처럼 처리되지 않았습니다. 파일의 내용은 내부적으로 반환 cat되지만 cat물결표 확장, 와일드카드, 변수 확장 등은 외부에서 처리되었습니다. 그러므로 외부 고양이는 통과한다.단어~/.ssh/firstname.lastname예상되는 대신 이름 /path/to/your/home/.ssh/firstname.lastname.

두 가지 솔루션:

  1. 파일을 포함할 절대 경로: 포함된 path_to_key.txt 대신 ~/.ssh/firstname.lastname(예를 들어)/home/you/.ssh/firstname.lastname
  2. 결과 명령(명령 대체가 발생한 후)이 다음과 같도록 cat외부 를 래핑합니다 .eval재처리됨: eval cat $(cat path_to_key.txt). 이는 추가 평가 계층을 제공하므로 해당 키 파일 내의 모든 리디렉션 또는 후속 명령이 물론 원하는 물결표 확장과 함께 실행됩니다.

관련 정보