server A
인터넷에 노출된 SSH 서버를 통해 집에서 직장의 서버( )에 연결할 수 있습니다 .
server C
에서 직접 액세스할 수 없는 다른 사무실( )에 있는 서버에서 명령을 실행해야 합니다 server A
.
그러나 접속이 가능한 중간서버( server B
) 가 존재하며 server A
, 그로부터 server C
접속이 가능하다.
+------+ +----------+ +----------+ +----------+
| home |---| server A |---| server B |---| server C |
+------+ +----------+ +----------+ +----------+
다음과 같이 ssh를 사용하여 원격 서버에서 명령을 실행할 수 있다는 것을 알고 있습니다.
ssh hostname command
따라서 여러 SSH 명령을 함께 연결하려고 시도했습니다.
ssh server_A ssh server_B ssh server_C command
그러나 오류가 발생합니다.
ssh: Could not resolve hostname server_B: Name or service not known
이는 DNS 조회가 원격 서버가 아닌 로컬에서 발생하고 있음을 시사하는 것 같습니다.
메모:
내 로컬 DNS 서버가 확인할 수 있는 호스트를 사용하여 여러 SSH 명령을 함께 연결해 보았더니 제대로 작동했습니다. 즉, DNS 조회 문제를 해결할 수 있다면 원하는 것을 달성할 수 있을 것입니다.
질문:
여러 SSH 명령을 함께 문자열로 묶으면서 다음 명령이 실행될 원격 서버에서만 이름 조회가 발생하도록 하려면 어떻게 해야 합니까?
답변1
내가 알 수 있는 한 이름 확인은 리모콘에서 수행됩니다.
/etc/hosts
클라우드에 있는 내 서버에 이름을 지정하도록 내 로컬 설정ping server
로컬 DNS 확인이 작동하도록 서버에 ping을 보냅니다.ssh server ping server
라고ping: unknown host server
ssh server ssh server
라고ssh: Could not resolve hostname server: Name or service not known
따라서 문자열에 있는 명령의 이름 확인은 로컬로 수행되지 않습니다. 주소를 얻을 수 없다면 원격 호스트 자체가 이름을 확인할 수 없기 때문입니다. 자신을 설득하려면 serverA에서 SSH 프롬프트를 시작하고 serverB(또는 다른 것)를 해결할 수 있는지 확인하십시오 ping
.