OpenSSH >=7.2는 원격 Unix 소켓 전달을 위한 로컬 물결표 확장을 지원합니까?

OpenSSH >=7.2는 원격 Unix 소켓 전달을 위한 로컬 물결표 확장을 지원합니까?

gpg-agentUnix 소켓을 원격 컴퓨터로 전달 하려고 합니다 . 원격 전달 명령의 다음 두 가지 버전을 시도했습니다.

  • ㅏ:ssh -vvv -N -R ~/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}
  • 두번째:ssh -vvv -N -R ~/.gnupg/S.gpg-agent:/home/{USER}/.gnupg/S.gpg-agent.extra {HOST}

초기 연결 후에는 모두 원격 전달 성공을 보고합니다 ssh.하지만debug1: connect_next: host ~/.gnupg/S.gpg-agent.extra ([unix]:~/.gnupg/S.gpg-agent.extra): No such file or directory, 원격 시스템에서 실제 데이터 연결을 시도할 때 옵션 A에 대한 소켓은 실패하지만 gpg-connect-agent /bye옵션 B에 대한 소켓은 정상적으로 작동합니다.

ssh원격으로 명령 전달을 통해 로컬 홈 디렉토리 확장이 가능한지 궁금합니다 . 그렇지 않다면 왜 그렇습니까?

답변1

~몇 가지 절차를 거쳐 확장 해야 합니다 . 일반적으로 이 프로그램은 쉘입니다. sshd 데몬은 셸에 대한 경로를 제공하지 않으며 경로를 확장하지도 않습니다.

그러나 현재 사용자의 홈 디렉토리는 어쨌든 작업 디렉토리이므로 확장할 필요가 없습니다.

노력하다

ssh -vvv -N -R ~/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}

편집하다:

이는 클라이언트가 아닌 호스트의 작업 디렉터리가 항상 대상 사용자의 홈 디렉터리이기 때문에 작동합니다.

SSH 서버는 ~환경 변수를 확장하지 않지만 호스트에서 코드를 실행하여 SSH 서버가 사용할 수 있는 알려진 위치에 대한 링크 또는 기호 링크를 생성할 수 있어야 합니다.

편집됨쿠사라난다가 제안한 대로

답변2

주석은 개행 문자를 지원하지 않으므로 여기에 넣어야 했습니다.

  • ssh -vvv -N -R ~/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}일하다
  • ssh -vvv -N -R ${HOME}/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}일하다
  • ssh -vvv -N -R ~/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}하다아니요일하다
  • ssh -vvv -N -R ${HOME}/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}하다아니요일하다

@RalfFriedl이 그의 의견(여기에 그대로 복사됨)에서 설명했듯이 "The는 ${HOME}클라이언트 쉘로 대체됩니다. 이것은 $HOME클라이언트와 서버 $HOME에서 동일한 경우에만 작동합니다 . The는 ~/단어의 시작 부분에서만 확장되지만 그렇지는 않습니다. 말로 확장하면 ~/XX그냥 "입니다.$HOME/XXXX:~/XX:~/

RemoteForward구성 파일 의 키워드를 사용하여 이를 자동화 하려는 경우 ssh변수 확장이 없으므로 절대 경로를 사용해야 한다는 점에 유의하세요. 가장 좋은 방법은 알려진 위치에 대한 심볼릭 링크를 만들고 해당 경로를 ssh구성 파일에 사용하는 것입니다. 저는 여러 플랫폼(Ubuntu, Fedora, MacOS 등)에서 동일한 구성 파일을 사용하므로 이것이 제가 해야 할 일입니다.

관련 정보