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


11

특정 원격 컴퓨터에 연결하기 전에 특정 로컬 명령을 실행해야합니다. 그래서 대신 ssh me@remote.machine내가해야 할

local_command
ssh me@remote.machine

내가 할 수 있도록 이것을 자동화하고 싶습니다 ssh remote.machine.

ssh을 호출하는 자체 스크립트를 작성하여 쉘 레벨에서이를 달성 할 수 있다는 것을 알고 /usr/bin/ssh있지만 ProxyCommand 옵션을 사용하여 수행 할 수 ssh_config있습니까?

내가 이해하는 한 다음과 같은 것이 필요합니다.

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

~/.ssh/config파일에 있지만 원형이기 때문에 물론 이것은 아닙니다!

답변:


9

사용하는 경우 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


1

링크 한 페이지의 예를 사용하십시오.

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 = 포트)에 전달합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.