SSH 구성 파일을 $HOME
대체하는 데 사용하고 싶습니다./Users/Me
Host MyHost
HostName 192.168.1.1
IdentitiesOnly yes
User me
IdentityFile "/Users/Me/.ssh/id_rsa"
하지만 난 얻었어no such identity: $HOME/.ssh/id_rsa: No such file or directory
답변1
적어도 내 Debian 10 시스템에서는 ssh_config(5)
매뉴얼 페이지에 다음과 같이 나와 있습니다.
논쟁신분증물결표 구문을 사용하여 사용자의 홈 디렉터리나 TOKENS 섹션에 설명된 토큰을 참조할 수 있습니다.
따라서 다음과 같이 줄을 작성할 $HOME
수 있습니다 .IdentityFile
IdentityFile "~/.ssh/id_rsa"
또는 다음과 같이:
IdentityFile "%d/.ssh/id_rsa"
환경 변수 구문( ${HOME}
) 지원은 구성 항목에서만 언급되고 IdentityAgent
에서는 언급되지 않습니다 IdentityFile
.OpenSSH 릴리스 노트CertificateFile
환경 변수 구문 지원 및 구성 키워드가 OpenSSH 버전 8.4(2020-09-27에 릴리스됨)에 추가되었습니다 ControlPath
. IdentityFile
Debian 10에는 버전 7.9만 있습니다(최신 보안 수정 사항으로 백포트됨).
따라서 이 글을 쓰는 시점에서 매우 새로운 Linux 배포판을 사용하지 않는 한 OpenSSH 버전은 ${HOME}
SSH 구성 파일의 구문 사용을 지원하기에는 너무 오래되었을 수 있습니다.
답변2
SSH 구성 파일의 일부 키워드는 환경 변수를 지원하지만 대부분은 지원하지 않습니다. 다행히 IndentyFile은 그 중 하나입니다.
파일에서 ${HOME}
대신 사용해야 합니다 .$HOME
tokens
예를 들어 를 사용하여 홈 디렉토리를 참조할 수도 있습니다 %d
. 이것은 에 의해 문서화되었습니다 man ssh_config
.
답변3
-F
추가하려면 ssh 옵션(사용자 정의 구성 파일)을 사용하여 두 가지 작업을 더 수행할 수 있습니다. 특히 이러한 변수는 오래되었지만 널리 사용되는 CentOS 7에서는 작동하지 않기 때문입니다. 이는 노드에 홈 디렉터리가 없을 때 중요합니다(그러나 $HOME은 존재하지 않는 위치를 가리킵니다). 예를 들어 HTCondor 클러스터에서 $_CONDOR_SCRATCH_DIR은 $HOME이 아니라 사용자의 집입니다. 등.
파일 경로는 상대 경로일 수 있으므로 cd
원하는 디렉터리로 이동하여 상대 경로를 사용하세요.
ssh -F relative_ssh.config servername
두 번째는 활용 범위를 확대하는 것입니다.envsubst
FOO=1 BAR=2 envsubst < in_file > out_file
그러나 많은 Singularity 컨테이너와 마찬가지로 이 명령은 ssh
간단한 시스템( yum/apt-get install utils-linux
또는 yum/apt-get update
Singularity 빌드)에는 존재하지 않습니다.
마지막으로 PSA는 SSH 키와 구성을 원격 서버/클러스터/컴퓨터에 저장하는 것은 위험합니다. 볼륨이 마운트된 컴퓨터에서 누구도 sudo 권한을 갖고 있지 않다고 100% 확신하지 않는 한 공유 공간에 두지 마십시오. OBfuScAt1on이 도움이 될 수 있지만(예: 아무도 이름이 지정된 폴더를 보지 않음) 실제로는 (베어본에 존재) crash-dump-Aug23
타르볼을 암호화하는 데 사용됩니다.openssl