
사용자를 기반으로 SSH 연결을 어떻게든 리디렉션할 수 있습니까?
예를 들어, 호스트 1, 호스트 2라는 3개의 프록시 머신이 있습니다.
사용자 john이 프록시(ssh john@proxy_ip)에 로그인하고 자동으로 host1에 로그인하고 사용자 alice(ssh alice@proxy_ip)가 자동으로 host2에 로그인하도록 하려고 합니다.
사용자는 자신이 어디로 리디렉션되는지 알 수 없습니다. 따라서 ssh -J john@proxy_ip john@host1은 해결책이 아닙니다.
SSH에 이러한 옵션이 있습니까? 어떤 제안이 있으십니까?
답변1
사용자 지정 "셸"을 사용하여 프록시 호스트의 각 사용자 계정을 구성할 수 있습니다. 이는 실제로 특정 백엔드 호스트의 특정 사용자 계정에 대한 SSH 연결을 설정하는 스크립트입니다.
이러한 스크립트는 기본적으로 다음과 같습니다.
#!/bin/sh
exec ssh ${USER}@hostX #replace hostX with actual host name here
이를 셸로 설정하려면 각 대상 호스트에 대한 스크립트를 나열한 /etc/shells
다음 프록시 호스트의 사용자 계정에 할당해야 할 수 있습니다.
chsh -s /usr/local/bin/ssh-to-host1 john
chsh -s /usr/local/bin/ssh-to-host2 alice
이렇게 하는 경우 프록시->hostX 점프를 위한 SSH 키도 설정하거나 두 번째 연결이 원활하게 인증되는지 확인해야 합니다.
이러한 이유로 exec
ssh to hostX가 시작된 후에는 돌아갈 쉘 프로세스가 없으므로 ssh 세션이 종료되면 사용자도 자동으로 에이전트에서 로그아웃됩니다.
대상 호스트는 여전히 실제 호스트 이름을 표시하므로 이는 완벽하지 않습니다("Spartacus"를 선택하고 모든 호스트 이름을 프록시 호스트와 동일하게 설정하여 다른 문제를 일으킬 수 있는 경우 제외).
답변2
이렇게 하려면 .ssh/config
리디렉션하려는 사용자 계정을 편집하면 됩니다. 따라서 /home/alice/.ssh/config
다음과 같습니다.
Host proxy_ip
User alice
HostName host2
그리고 /home/john/.ssh/config
:
Host proxy_ip
User john
HostName host1