직접 연결할 수 없는 서버에 어떻게 SSH로 접속하나요?

직접 연결할 수 없는 서버에 어떻게 SSH로 접속하나요?

문맥

나는 Ubuntu Desktop을 기본 컴퓨터로 실행하고 있으며 이를 D라고 부를 것입니다. SSH를 통해 서버 S에 연결하고 싶지만 방화벽이 나를 차단하고 있습니다.

Windows 가상 머신과 관련된 매우 번거로운 경로를 통해 서버 S에 액세스할 수 있습니다.퍼티. 이로 인해 이 서버를 사용하는 작업이 매우 짜증나게 됩니다. 완전히 다른 환경, 복사/붙여넣기가 작동하지 않음, 연결되어 있는 동안 데스크탑을 제대로 사용할 수 없습니다(가상 머신에 의해 Alt-Tab이 깨짐) 등

서버 S에서 데스크톱 컴퓨터 D(필요한 것과 반대)로 SSH를 통해 연결할 수 있음을 확인했습니다.

데스크탑에서 서버로 SSH를 통해 연결할 수 있도록 어떻게든 서버에서 "포트 전달"이나 이와 유사한 기능을 시작할 수 있습니까?

답변1

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

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

터널이 설정되면 다음 명령을 사용하여 원격 서버에 간단히 SSH를 통해 연결할 수 있습니다.

$ ssh -p 1234 user@localhost

자동 로그인(비밀번호 프롬프트 없음)을 위해서는 SSH 키를 설정해야 합니다. SSH 터널을 대화형으로 생성하려면 옵션을 제거하면 됩니다 -f -N. 더 많은 정보를 위해서, man ssh.

답변2

최신 버전의 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포트를 사용하는 경우. IP에 있으면 다음 과 같이 작성할 수 있습니다.2222remote_server192.168.0.110windows_server

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

그리고아직그냥 달려 ssh remote_server가세요.


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

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

이는 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.

답변3

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

관련 정보