ssh_config의 ProxyCommand는 원격 시스템에 연결하기 전에 로컬 명령을 실행할 수 있습니까?

ssh_config의 ProxyCommand는 원격 시스템에 연결하기 전에 로컬 명령을 실행할 수 있습니까?

특정 원격 시스템에 연결하기 전에 특정 로컬 명령을 실행해야 합니다. 그러니까 난 할 필요 없어ssh [email protected]

local_command
ssh [email protected]

저는 이것을 자동화하고 싶기 때문에 이것만 하면 됩니다 ssh remote.machine.

나는 나만의 호출 스크립트를 생성하여 ssh쉘 수준에서 이를 달성 할 수 있다는 것을 알고 있지만 /usr/bin/ssh다음을 사용할 수 있습니다.프록시 명령옵션 ssh_config?

내가 이해하는 바에 따르면 다음과 같은 것이 필요합니다.

Host remote.machine
    ProxyCommand local_command; ssh [email protected]

~/.ssh/config파일에 있지만 물론 루프이기 때문에 정확히 같지는 않습니다!

답변1

사용하는 경우 ProxyCommand유사한 방법을 사용하여 /usr/bin/nc서버에 연결해야 합니다.

sh -c "command list"연결하기 전에 명령을 호출하려면 두 명령을 하나로 결합 해야 합니다 .

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

더:

너무 복잡 하다면 local_command스크립트를 사용할 수 있습니다.

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

SSH 구성은 다음과 같습니다.

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

마지막으로 자신만의 프록시를 추가할 수 있습니다./usr/bin/nc

답변2

링크한 페이지의 예를 사용하면 다음과 같습니다.

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

nc(netcat)를 호출하여 에이전트(에이전트는 192.0.2.1:8080에서 실행 중)에 연결하고 %h 및 %p를 ssh 명령(%h = 호스트 이름, %p = 포트)에 전달합니다.

관련 정보