에이전트 전달을 사용하여 SSH에 연결하면 메시지가 표시되지 않습니다.

에이전트 전달을 사용하여 SSH에 연결하면 메시지가 표시되지 않습니다.

현재 집에서 일하고 있는데 프로덕션 서버에 연결해야 합니다. 직장의 보안 정책은 VPN 클라이언트가 프로덕션 인스턴스에 연결하는 것을 허용하지 않습니다. 따라서 나는 개발 서버(액세스할 수 있음)를 통해 에이전트 전달이 허용되므로 구성할 수 있다고 생각했습니다.

이를 위해 먼저 개발 서버에 대한 에이전트 전달을 활성화했습니다.

  1. 내 컴퓨터의 개발 서버 항목에 ForwardAgent yes추가 했습니다.~/.ssh/config
  2. eval 'ssh-agent'SSH 에이전트를 시작하기 위해 달렸습니다.
  3. 다음을 사용하여 에이전트에 SSH 키를 추가했습니다.ssh-add ~/.ssh/id_rsa
  4. 나는 다음을 사용하여 개발 서버에 연결했습니다.ssh -A <devserver>
  5. 개발 서버에서 다음을 사용하여 프로덕션 서버에 연결을 시도했습니다.ssh -T me@<prodserver>

그 후 프로덕션 서버에서 명령을 실행할 수 있었습니다. 그러나 실제 bash 프롬프트는 표시되지 않습니다.

Bash 프롬프트가 누락되었습니다.

프롬프트가 표시되도록 할 수 있는 방법이 있나요?

여기에 이미지 설명을 입력하세요

답변1

마지막 단계에서는 옵션 ssh없이 실행합니다 -T.

-T      Disable pseudo-terminal allocation.

-T옵션을 사용하면 실제로 TTY 할당이 비활성화되어 결과적으로 쉘을 얻지 못하게 됩니다.

mtak@rubiks:~/bla(develop)$ ssh gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
Last login: Tue Mar 10 10:45:25 2020 from vpn-int-2.int.mtak.nl
mtak@gen1:~$ logout
Connection to gen1 closed.

mtak@rubiks:~/bla(develop)$ ssh -T gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
date
ma mrt 16 16:12:53 CET 2020

답변2

다음을 사용하여 프로덕션 서버에 연결을 시도했습니다.ssh -T me@<prodserver>

-T옵션 을 사용하기 때문에 메시지가 표시되지 않습니다.ssh에게 터미널 모드를 비활성화하라고 지시했습니다.(tty 할당).

tty의 존재는 모든 프로그램이 대화형으로 실행되는지(예: 터미널/키보드에 연결) 또는 파일이나 파이프에서 명령이 제공되는지 여부를 결정하는 방법입니다. 후자의 경우, 즉 "배치" 모드에서는 쉘이 모든 프롬프트를 비활성화하는 것이 정상입니다. 'ls'와 같은 도구는 화려한 형식과 색상화된 출력을 잃습니다. 등등.

관련 정보