SSH ControlPath는 호스트 이름 %h 대신 IP 주소를 사용합니다.

SSH ControlPath는 호스트 이름 %h 대신 IP 주소를 사용합니다.

현재 나는 이것을 제어 경로로 사용하고 있습니다.

  ControlPath /home/user/.ssh/sockets/ssh_mux_%h_%p_%r

호스트 이름 "redishost"에 연결하면 redishost로 소켓이 생성됩니다.
IP 주소를 사용하여 동일한 호스트 "redishost"에 연결하면 IP 주소로 소켓이 생성됩니다.

모든 SSH 연결에 대해 제어 경로에서 호스트 이름 %h 대신 ip를 사용할 수 있습니까?

답변1

원격 호스트를 참조하는 데 사용할 수 있는 유일한 토큰은 %h이므로 이는 불가능해 보입니다. 바라보다https://man.openbsd.org/ssh_config#TOKENS.

호스트 이름 대신 IP 주소를 사용하게 된 동기에 대해 더 자세히 말씀해 주시겠습니까? 그러면 어쩌면 우리는 이 문제에 대한 대안적인 해결책을 찾을 수 있을 것입니다.

답변2

openssh don't have any token for controlpath expression where ip address can be specified. openssh 문서와 소스 코드를 확인한 결과, 사용하고 싶다면 내 저장소를 사용할 수 있다는 것을 알았고 , openssh 소스 코드를 편집하고 IP 주소 확인을 위해 %x 토큰을 추가했습니다.

ControlPath는 이제 다음과 같이 됩니다.

  ControlPath /home/user/.ssh/sockets/ssh_mux_%x_%p_%r

ControlPath에서 지원되는 토큰:

        "l", thishost,
        "n", host_arg,              "n", host_arg,
        "p", portstr,               "p", portstr,
        "x", hostip,
        "r", options.user,              "r", options.user,
        "u", pw->pw_name,               "u", pw->pw_name,
        "i", uidstr,                "i", uidstr,
        "h", host,

https://github.com/akhilin/openssh-portable/commit/a2d95e090b73f36590e8c189685ce8cea810f49a

관련 정보