ssh를 사용하여 다른 PC를 통해 PC에 연결하는 방법


13

컴퓨터 가 3 대 있습니다.

PC1PC2 는 개인 LAN에 있으며 PC1PC2 로 알려진192.168.0.2

PC2PC3 은 다른 LAN에 있으며 PC2PC3192.168.123.101

어떻게 연결할 수 PC1 에서 PC3 SSH와 함께.

다음과 같은 것이 있습니까?

ssh user@192.168.0.2 -via user@192.168.123.101

답변:


19
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'

그런 다음 간단하게 실행할 수 있습니다 ssh PC1.

에있는 별칭을 통해 가장 잘 사용됩니다 ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101

-W옵션 이없는 구 버전의 OpenSSH (이것은 ≤5.4라고 생각합니다)에서 netcat 이 PC2에서 사용 가능한지 확인 하고 사용하십시오

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p

1
+1 그렇습니다 . 자세한 내용은 stackoverflow.com/questions/1010808/1122282#1122282 와 비슷한 답변이 있습니다.
ephemient

netcat을 설치해야 함
Stefan

4

SSH를 사용하면 명확한 해결책이 있습니다.

  1. 로컬 컴퓨터 ~/.ssh/config에서 다음을 갖도록 설정하십시오 .

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. 연결하려는 게이트웨이와 최종 서버 모두에서 로컬 클라이언트의 공개 키가 ~/.ssh/authorized_keys

  3. 게이트웨이 시스템 ~/.ssh/authorized_keys에서 클라이언트의 공개 키를 지정하는 행의 시작 부분에서 다음과 같이 강제 명령을 추가하도록 변경해야합니다.

    command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
    

-A당신이 암호를 모든 시간을 보내지 같이 할 경우 에이전트를 전달하는 것입니다 ...

이렇게하면 언제든지 ssh WhatYouWillCallTheConnection게이트웨이를 통해 바로 실행되고 다른 쪽의 서버에 투명하게 연결됩니다.


2
ssh -A게이트웨이 시스템의 관리자를 신뢰 하지 않으면 사용하지 마십시오 . 개인 키는 얻을 수 없지만로 게이트웨이에 연결되어 있으면 ssh -A전달 된 에이전트를 사용하여 다른 컴퓨터에 연결할 수 있습니다.
Jander

2

포트 포워딩이 유용 할 수 있습니다.
PC1에서 :

~# ssh -fN -L 22:PC3:7777 -l <user> PC2  

7777은 모든 포트 일 수 있습니다 (아직 사용하지 않는 경우). 나는 그 숫자와 +1 (7778, 7779 등)로 관리 할 수있는 "주문"을 좋아한다.

이 작업이 완료되면 PC1의 로컬 포트 ​​7777에서 PC3의 포트 22로 '투명한'터널이 생깁니다.

~# ssh -l <user> -p 7777 localhost  

그리고 당신은 PC3에 있어야합니다.
SOCKS 프록시를 설정하려는 경우 -D를 사용하여 포트를 동적으로 전달할 수도 있습니다.

~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2  

건배!


1

이것에 대한 2017+ ( v7.3 부터 )는 ProxyJump입니다 .

ssh -J user@jumphost user@destination

의 약자 ​​:

ssh -o "ProxyJump user@jumphost" user@destination

다음 ssh dest과 같이 ~/.ssh/config스 니펫 을 사용하여 단축 할 수 있습니다 .

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on

0

내가 아는 유일한 해결책은 Belier사용한 ssh 스크립팅입니다 .

Belier를 사용하면 SSH 연결을 통해 셸을 열거 나 원격 컴퓨터에서 명령을 실행할 수 있습니다. Belier의 주요 기능은 작업을 실현하기 전에 여러 중간 컴퓨터를 교차 할 수 있다는 것입니다.

얼마 전 MIT Lincoln Laboratory 홈페이지 에서이 README.sshhop 을 찾았 지만 이에 대한 추가 정보를 찾을 수 없었습니다. 누군가 더 알고 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.