직접 연결할 수없는 서버로 ssh하는 방법은 무엇입니까?


17

문맥

기본 시스템으로 Ubuntu Desktop을 실행하고 있는데 D라고 부릅니다. ssh를 통해 서버 S에 연결하고 싶지만 방화벽이 차단하고 있습니다.

Windows 가상 머신 및 PuTTY 와 관련된 매우 번거로운 경로를 통해 서버 S에 액세스 할 수 있습니다 . 이 서버로 작업하는 것은 매우 성가신 일입니다. 완전히 다른 환경, 복사 / 붙여 넣기가 작동하지 않습니다, 연결된 상태에서 데스크탑을 올바르게 사용할 수 없습니다 (Alt-Tab이 가상 머신에 의해 손상됨)

서버 S에서 내 데스크탑 컴퓨터 D (필요한 것과 반대)로 ssh를 수행 할 수 있음을 확인했습니다.

어떻게 든 서버에서 "포트 포워딩"또는 유사한 것을 시작하여 데스크탑에서 서버로 ssh 할 수 있습니까?


2
호스트 점프 ... 사랑 해요!
RonJohn


@muru 이것은 다른 시나리오이지만 물론 관련이 있습니다 (결국 터널링에 관한 것입니다!). 이 경우에는 내가 가짜 원하는 D->S남용에 의해S->D
dangonfast

답변:


32

다음 명령을 사용하여 원격 서버에서 로컬 시스템으로 SSH 터널을 설정할 수 있습니다.

$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip

터널이 설정되면 다음 명령을 사용하여 원격 서버로 간단히 ssh 할 수 있습니다.

$ ssh -p 1234 user@localhost

자동 로그인을 위해 ssh 키를 설정해야합니다 (비밀번호 프롬프트 없음). SSH 터널을 대화식으로 작성하려면 옵션을 제거 할 수 있습니다 -f -N. 자세한 내용은을 (를) 참조하십시오 man ssh.


이 터널은 Windows VM을 어떻게 통과합니까? (내가 일하는 곳에는 여러 계층의 방화벽이 있으며 포트가 몇 개만 열려 있습니다.)
RonJohn

@ RonJohn 나는 이것이 서버에서 데스크톱으로 (OP의 경우) ssh-ing이 작동한다는 사실을 사용한다고 생각하므로 서버 (포트 22)에서 데스크톱 컴퓨터 (포트 1234)로 직접 터널을 설정하여 사용할 수 있습니다 포트 22를 사용하는 서버의 ssh에 연결합니다. Windows VM은 터널을 설정하는 데만 사용됩니다. (내가 틀렸다면 정정 해주세요)
pizzapants184

@dangonfast 답변 외에도 다음과 같은 가치 문서를 찾을 수 있습니다. spencerstirling.com/computergeek/sshtunnel.html
Pryftan

@RonJohn 내가 방금 연결 한 문서는 적어도 여러 계층의 방화벽 등이 진행되는 한 그 질문에 답하는 데 도움이 될 수 있습니다 (메모리가 제대로 제공되면 매우 오랜 시간을 읽었습니다 .. 나는 단지 몇 년 전부터 연결을 기억합니다.)
Pryftan

1
@ pizzapants184 실제로, 그것은 나의 출발점이었습니다 : ssh from S-> D, 그래서 그것은 무시할 수는 없지만 D-> S를 효과적으로 수행하기 위해 이것을 남용하고 싶습니다. 왜 네트워크가 그렇게 구성되어 있습니까? 의도적이거나 잘못 구성되었을 수 있지만 그것이 나를 위해 효과가있는 한 ...
dangonfast

5

최신 버전의 OpenSSH (7.3+)를 실행하는 경우 ProxyJump모든 것을 함께 마법처럼 구울 수 있습니다 .

ssh -J windows_machine remote_server

당신의 ~/.ssh/config모습은 다음과 같습니다.

Host remote_server
        HostName remote_server
        ProxyJump windows_machine
        User myname

ProxyJump전체 SSH 구문을 지원하므로 jim켜져 있으면 ssh에 windows_server포트 2222를 사용합니다 . remote_serverIP에 있습니다 192.168.0.110으로부터 windows_server당신은 쓸 수 있습니다 :

Host remote_server
        HostName 192.168.0.110
        ProxyJump jim@windows_machine:2222
        User myname

그리고 여전히ssh remote_server 거기에 도착하기 위해 달려 갑니다.


이전 버전의 SSH를 실행중인 경우 ProxyCommand를 사용 하십시오 .이를 통해 실제 SSH 명령을 실행하기 전에 먼저 SSH에 명령을 실행하여 프록시 연결을 설정 하도록 지시 할 수 있습니다.

ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server

이것은 보다 간결한 netcat 구문의 약어 인 SSH -W 옵션을 사용 합니다. .

ssh remote_server당신이 지금 당신을 실행하는 것처럼 점프 상자에서windows_machine IP의 IP를 사용해야합니다remove_server 당신의 컴퓨터의 IP가 아니라 해야합니다-이것들은 동일 할 수 있습니다.

그런 다음이 지시문을 ~/.ssh/config파일에 추가 할 수 있습니다 .

Host remote_server
  HostName remote_server
  User myname
  ProxyCommand ssh -W %h:%p windows_machine

경우에 것을이 수단 remote_server 이며 다른 시스템에서 본 windows_machine당신은 설정에 그것을 넣어 여전히 사용할 수 있습니다 ssh remote_server.


1
이것은 훨씬 더 나은 대답입니다.
Robert Riedl

유용하지만 이것은 질문에 대한 답변이 아닙니다. OP는 D-> S (원하는 것)에서 SSH 할 수 없지만 S-> D에서 SSH 할 수 있다고 말합니다. 사이에 ssh 프록시가 없습니다 (대신 RDP에 의해 액세스되는 Windows 가상 머신이 있음).
mbrig

@mbrig 실제로. 이 솔루션을 시도하지는 않았지만 작동하면 놀랐습니다. D-> S
dangonfast

그러나 당신은 당신이 윈도우 머신에 도달 할 수 있다고 말합니다. 나는 그것이 당신과 다른 머신 사이의 점프 박스 역할을 할 수 있다는 것을 이해했습니다.
거미 보리스

1
독점 도구 (VMWare Horizon)를 사용하여 Windows 시스템에 로그인 할 수 있습니다. 나는 그것에 ssh 할 수 있다고 말한 적이 없다. Putty companion ssh server (이름을 잊어 버렸습니다)를 설치 하여이 질문을 게시하기 전에 이것을 테스트했지만 테스트에 실패했습니다. ssh가 Windows 서브넷에도 방화벽으로 연결되어 있다고 가정합니다.
dangonfast

1

상황을 우회하고 복잡한 경로를 만드는 대신 데스크탑에서 서버로 SSH를 허용하도록 요청할 수 있습니까? 당신이 그것을 필요로하고 서버에 액세스해야한다면 요청이 거부 된 이유를 알 수 없습니다.


downvote를 설명 할까? 문제는 "내가 직접 연결할 수없는 서버에 ssh하는 방법"입니다. 방화벽 규칙을 적용하여 내 대답은 유효합니다. 좋은 보안 관행에 따라 주변을 돌아 다니는 적절한 방법이기도합니다.
Solarflare

저는 대기업 고객과 3 개월 계약 한 첫 주에 있습니다. 나는 노트북 (내 것을 사용한다)과 간신히 책상을받지 못했다. 다른 서비스를 사용할 수있는 수십 개의 자격 증명이 있으며 모든 것을 저글링하기 위해 간신히 관리하고 있습니다. 내가하고 싶은 일은 내 작업을 수행하기위한 어려운 요구 사항이 아닙니다 .VM에서 일할 수 있으며, 재미있는 질문을 시작하면 상사가 나에게 말할 것입니다. 또는 그는 나를 헬프 데스크로 안내하여 다음 몇 주 / 몇 달 동안 도로를 따라 내려갈 수 있습니다.
dangonfast

VM에서 작업하면 쉽게 50 %의 생산성 손실을 의미하므로 가능한 한 많은 것을 피하고 싶습니다. 아직도, 나는이 공연을 사랑합니다!
dangonfast

1
이해할 수 있습니다. 내 경험상 '대기업 고객'은 계약자가 이타적인 목적이더라도 협력 업체가 방화벽과 정책을 우회하여 업무를 수행 할 때 화를내는 경향이 있습니다. 서버에서 데스크탑으로 SSH 할 수 있다는 사실은 당신이 역전을 할 수없는 것은 감독이나 특정 목적을 위해 마련 된 것이라고 말합니다.
Solarflare

4
당신이 적어도,에 ... 우회 정책에 대한 해고하는 위험을 방지하려는 경우는 유일한 솔루션입니다 이야기 그들은 당신이 최대 무엇인지 알 수 있도록 Khaleds 솔루션을 사용하기 전에 책임있는 사람에게.
Sven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.