점프박스 및 pbrun을 통해 SSH 액세스 구성

점프박스 및 pbrun을 통해 SSH 액세스 구성

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? 그렇다면 제가 시도한 명령/구성에서 확실한 수정 사항을 찾았습니까?


한정:

  1. 보안 정책에서 금지하기 때문에 공개 키 인증(PKA)을 사용하여 서버 간 신뢰를 구축할 수 없습니다. 모든 인증은 Powerbroker를 통해 수행되어야 합니다(위의 pbrun 명령 참조).

  2. 게이트웨이에서 원격으로의 인증은 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'

다른 방법을 사용할 수 있습니다원격 명령그리고 사용퍼브룬댓글 섹션에서 제안한대로.

관련 정보