
현재 집에서 일하고 있는데 프로덕션 서버에 연결해야 합니다. 직장의 보안 정책은 VPN 클라이언트가 프로덕션 인스턴스에 연결하는 것을 허용하지 않습니다. 따라서 나는 개발 서버(액세스할 수 있음)를 통해 에이전트 전달이 허용되므로 구성할 수 있다고 생각했습니다.
이를 위해 먼저 개발 서버에 대한 에이전트 전달을 활성화했습니다.
- 내 컴퓨터의 개발 서버 항목에
ForwardAgent yes
추가 했습니다.~/.ssh/config
eval 'ssh-agent'
SSH 에이전트를 시작하기 위해 달렸습니다.- 다음을 사용하여 에이전트에 SSH 키를 추가했습니다.
ssh-add ~/.ssh/id_rsa
- 나는 다음을 사용하여 개발 서버에 연결했습니다.
ssh -A <devserver>
- 개발 서버에서 다음을 사용하여 프로덕션 서버에 연결을 시도했습니다.
ssh -T me@<prodserver>
그 후 프로덕션 서버에서 명령을 실행할 수 있었습니다. 그러나 실제 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'와 같은 도구는 화려한 형식과 색상화된 출력을 잃습니다. 등등.