키 잠금 해제를 위해 SSH 터널이 중단되었습니다. - 단일 명령을 찾고 있습니다.

키 잠금 해제를 위해 SSH 터널이 중단되었습니다. - 단일 명령을 찾고 있습니다.

다른 서버(B)를 통해서만 액세스할 수 있는 원격 서버(A)에 액세스하기 위해 SSH 터널을 생성하려고 합니다. 내 로컬 컴퓨터(L)에 릴레이 서버(B)에 연결하기 위한 키가 있고 릴레이 서버(B)에 대상 서버(A)에 연결하기 위한 또 다른 키가 있습니다.

[릴레이 서버(B)에 대한 키가 있는 로컬 머신(L)] --> [대상 서버(A)에 대한 키가 있는 릴레이 서버(B)] --> [대상 서버(A)]

내 로컬 컴퓨터(L)에 다음과 같은 ~/.ssh/config 파일이 있습니다.

Host relay.server(B)
    Hostname relay.server
    Port 22
    User me
    IdentityFile ~/.ssh/id_rsa

Host destination.server(A)
    Hostname destination.server
    Port 1122
    User me
    IdentityFile ~/.ssh/id_rsa

그리고 다음과 같이 터널을 작동시킬 수 있습니다.

ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B)내 로컬 컴퓨터(L)에서 다음 명령을 실행합니다 . 첫 번째 키를 잠금 해제하기 위한 비밀번호를 묻는 메시지가 표시되고 중단된 것처럼 보이지만 프롬프트를 반환하지 않습니다. -f옵션을 사용하거나 기호로 끝나는 경우 &비밀번호를 입력할 수 없습니다. 그러나 ^C비밀번호를 입력한 후 이 명령을 입력 하면 ssh destination.server(A)대상 서버(A)에 연결된 후 두 번째 키의 잠금을 해제하기 위해 비밀번호를 제공하라는 메시지가 표시됩니다.

내 로컬 컴퓨터(L)에서 대상 서버(A)에 연결할 수 있게 하고 각 키를 잠금 해제하는 데 필요한 비밀번호를 제공하라는 메시지를 표시하는 단일 명령을 찾고 있습니다. 또는 릴레이 서버(B)를 통해 내 로컬 컴퓨터(L)에서 대상 서버(A)에 직접 연결할 수 있도록 항목을 구성하는 대체 방법에 대한 제안입니다.

답변1

짧은 대답은 당신이 필요하다는 것입니다

  • ProxyCommandnc연결하는 데 사용
  • ForwardAgent열쇠를 전달하기 위해
  • 공개 키가 .ssh/authorized_keys모든 서버 의 일부인지 확인하세요.
Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand    ssh -q relay "nc %h %p"
    ForwardAgent    yes

더 긴 부분.

ssh config의 옵션 은 해당 엔클로징이 사용될 ProxyCommand때마다 명령을 실행합니다 . Host이는 일반적으로 ncnmap.org라고도 알려진 nmap.org에서 사용되며 ncat많은 옵션이 있습니다.

위의 Host destinationssh 구성 항목 에서는 ssh가 조용히 릴레이하고 실행하도록 ProxyCommand설정되었습니다 .ssh -q relay "nc %h %p"nc destination.server.fqdn.or.IP 22

nc들어오는 SSH와 대상을 연결합니다.

ForwardAgent yesssh-agent에 키를 추가하도록 ssh에 지시합니다 . SSH 에이전트는 키를 추적하고 필요에 따라 올바른 키를 호스트에 자동으로 전달하는 데 사용됩니다. 이는 ForwardAgent yes에이전트에게 릴레이의 다른 에이전트에게 키를 전달한 다음 다시 대상으로 전달하도록 지시합니다.

이제 이 모든 것이 작동하려면 통과하는 각 서버와 궁극적으로 대상의 .ssh/authorized_keys파일에 개인 키(id_rsa)와 연결된 공개 키가 있어야 합니다. 개인 키 id_rsa를 생성할 때 공개 키 id_rsa.pub도 생성되어야 합니다.

공개 키가 없는 경우 언제든지 ssh-keygen -y -f ~/.ssh/id_rsa쉽게 복사/붙여넣기를 위해 개인 키에서 가져올 수 있습니다. 공개 키에는 공백으로 구분된 2~3개의 필드가 있지만하나선.

따라서 공개 키를 ssh relay편집 ~/.ssh/authorized_keys(존재하지 않을 수 있으므로 mkdir -p ~/.ssh필요할 수 있음)하고 새 줄(또는 없으면 첫 번째 줄)에 붙여넣습니다.

릴레이 서버에 있는 동안 nc/bin 또는 /usr/bin에 존재하는지 확인합니다. 그렇지 않은 경우 패키지 관리자(yum 또는 apt-get)를 사용하여 설치해야 합니다.

릴레이 서버에서 ssh destination동일한 업데이트를 수행합니다 ~/.ssh/authorized_keys.

exit로컬 컴퓨터로 끝까지 이동하면 다음을 수행할 수 있습니다.ssh destination

답변2

최신 OpenSSH 버전 ProxyJump에서는 다음 을 허용합니다 .ssh/config.

Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    ProxyJump       relay
    User            me
    IdentityFile    ~/.ssh/id_rsa

관련 정보