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

컴퓨터 가 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



답변

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


답변

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게이트웨이를 통해 바로 실행되고 다른 쪽의 서버에 투명하게 연결됩니다.


답변

포트 포워딩이 유용 할 수 있습니다.
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

건배!


답변

이것에 대한 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


답변

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

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

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


답변