Powerbroker가 있고 호스트에 직접 액세스할 수 없는 RHEL6 환경에서는 점프박스/게이트웨이를 통해 해당 호스트로 이동할 수 있습니다.
이 명시적 명령은 구성 없이 작동하지만 장황합니다.
dk@local $ ssh -t dk@gateway 'pbrun -u sysuser -h remote bash'
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
위 명령을 ssh remote
. Powerbroker(pbrun 명령어)를 통한 인증에 유의하시기 바랍니다.
간단히 말해서 이것을 달성하는 것이 가능합니까 ~/.ssh/config
? 그렇다면 제가 시도한 명령/구성에서 확실한 수정 사항을 찾았습니까?
한정:
보안 정책에서 금지하기 때문에 공개 키 인증(PKA)을 사용하여 서버 간 신뢰를 구축할 수 없습니다. 모든 인증은 Powerbroker를 통해 수행되어야 합니다(위의 pbrun 명령 참조).
게이트웨이에서 원격으로의 인증은 Powerbroker를 통해 시행됩니다(
pbrun
명령 참조).
내가 시도한 것:
dk@local $ cat .ssh/config
Host behindProxy
HostName remote
ProxyCommand ssh -t dk@gateway 'pbrun -u sysuser -h %h bash'
dk@local $ ssh behindProxy
Pseudo-terminal will not be allocated because stdin is not a terminal.
dk@gateway's password:
pbrun8.5.1-01[4377]: 3346: TTY is no longer available
ssh_exchange_identification: Connection closed by remote host
dk@local $
dk@local $ cat ~/.ssh/config
Host behindProxy
HostName remote
ProxyCommand ssh -W %h:%p dk@gateway 'pbrun -u sysuser -h %h bash'
dk@local $ ssh behindProxy
dk@gateway's password:
dk@remote's password:
dk@remote $ # undesired, as the goal is to end up logged in as sysuser (see the pbrun command)
dk@local $ cat ~/.ssh/config
Host behindProxy
ProxyJump gateway
ProxyCommand pbrun -u sysuser -h remote bash
dk@local $ ssh behindProxy
dk@gateway's password:
channel 0: open failed: administratively prohibited: open failed
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
답변1
내가 찾은 두 가지 구성은 다음과 같습니다.
dk@local $ cat ~/.ssh/config
Host behindProxy
HostName gateway
LocalCommand pbrun -u sysuser -h remote bash
PermitLocalCommand yes
dk@local $ ssh behindProxy
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
그러나 연결은 실제로 게이트웨이에서 발생하지 않습니다.
sysuser@remote $ last -1 -w
dk pts/18 local.domain.com Sun Nov 8 22:03 still logged in
또는:
dk@local $ cat ~/.ssh/config
Host behindProxy2
HostName gateway
RemoteCommand pbrun -u sysuser -h remote bash
dk@local $ ssh -t behindProxy2
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
연결이 실제로 게이트웨이를 통과하고 있음을 증명하십시오.
sysuser@remote $ last -1 -w
dk pts/18 gateway.domain.com Sun Nov 8 22:06 still logged in
이 옵션 은 -t
필수입니다. 그렇지 않으면 오류가 발생합니다.
dk@local $ ssh behindProxy2
dk@gateway's password:
sysuser@remote's password: pbrun8.5.1-01[20295]: 3346: TTY is no longer available
-t
다음을 지정하면 이를 제공하지 않아도 됩니다 RequestTTY force
.
dk@local $ cat ~/.ssh/config
Host behindProxy2
HostName gateway
RequestTTY force
RemoteCommand pbrun -u sysuser -h remote bash
dk@local $ ssh behindProxy2
dk@gateway's password:
sysuser@remote's password:
sysuser@remote $
답변2
쉬운 방법은 ssh JumpHosts를 사용하는 것입니다. 여기서 ssh 키를 사용하면 비밀번호를 두 번 입력하는 것을 피할 수 있습니다.
ssh -J <username>@<gateway_host>:<port> <username>@<remote_host>:<port>
마지막 수정 이후:
첫째, ProxyJump는 ssh 및 일부 매개변수가 있는 ProxyCommand의 약어이기 때문에 ProxyJump와 ProxyCommand를 동시에 사용할 수 없습니다.
더 나은 접근 방식은 ProxyCommand 지시문에서 직접 ssh를 사용하는 것입니다.
Host behindProxy
HostName gateway
ProxyCommand ssh -W %h:%p sysuser@remote 'bash'
다른 방법을 사용할 수 있습니다원격 명령그리고 사용퍼브룬댓글 섹션에서 제안한대로.