단일 명령으로 중간 시스템을 통해 ssh 연결 터널링


10

단일 명령으로 컴퓨터 A의 컴퓨터 B에서 컴퓨터 C로 ssh 연결을 설정하여 컴퓨터 C의 셸에 액세스 할 수있는 방법이 있습니까?

주름은 (-L 옵션을 사용하여 ssh 연결을 단순히 전달하는 것을 배제한 것으로 보입니다) 컴퓨터 B의 계정에 암호가 있고 컴퓨터 B의 계정은 컴퓨터 C의 계정에 연결할 수 있지만 컴퓨터 C의 계정에 대한 비밀번호가 없습니다.


답변:


8

나는 당신이 컴퓨터 C에 로그인하고 A에서 C로 아무것도 터널링하지 않기를 원한다는 것을 이해했습니다. 따라서 이것은 트릭을 수행해야합니다.

ssh -t computer-b "ssh computer-c"

먼저 컴퓨터 B와 컴퓨터 C에 대해 암호를 두 번 입력해야 할 수도 있지만 ssh의 키 쌍 인증을 사용하면이를 피할 수 있습니다.


1
감사합니다-작동합니다! 내가 후속 조치를 요구할 정도로 대담 할 수 있다면. 하나의 명령으로 A에서 C로 파일을 scp하는 방법에 대한 아이디어가 있습니까?
sanity

조금 까다 롭습니다. tar를 믹스에 추가하여 수행 할 수 있지만 파일이 하나이고 컴퓨터 B에 디스크 공간이 잠시 동안 있으면 두 단계로 복사하는 것이 훨씬 쉽습니다.
af.

이 작업을 세 번 수행 할 수도 있습니다! ssh -t computer-b "ssh -t computer-c 'ssh computer-d'": D
개크

0

SSH의 ProxyCommand를 사용하고 싶을 수도 있습니다. http://benno.id.au/blog/2006/06/08/ssh_proxy_command


컴퓨터 C의 암호가 없기 때문에이 작업을 수행 할 수있는 방법을 찾을 수 없으며이 방법은 암호를 요구하는 것 같습니다. 이 접근 방식이 더 우아해 보이지만 제안에 개방적입니다.
sanity

0

ssh 키를 사용하는 경우 머신 B의 새 키를 생성하고이를 사용하여 A에서 B로 연결할 수 있습니다. 머신 B에서 다음을 추가 할 수 있습니다.

command="ssh C" ssh-....

에서 ~/.ssh/authorized_keys파일. 즉, ssh 키로 B에 연결할 때마다 ssh C명령 이 실행됩니다 .

이것이 scp와 함께 작동하는지 모르겠습니다.


0

사용하다 ProxyCommand

참조하십시오 man ssh_config. 을 사용하는 것이 좋습니다 ProxyCommand. 원래 시나리오를 보자.

  • 컴퓨터 A (컴퓨터)
  • 컴퓨터 B (프록시 호스트 이름)
  • 컴퓨터 C (컴퓨터 B의 SSH를 통해서만 연결 가능)

~/.ssh/config다음 내용으로 편집하십시오 .

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

이제 컴퓨터 C에 투명하게 접근 할 수 있습니다. 예 :

ssh computerc

이 방법의 장점

더 안전한

개인 키만 컴퓨터 A (컴퓨터)에 있어야합니다. 이 nc명령은 SSH가 트래픽을 암호화하는 프록시 역할을합니다. 여기에는 인증이 포함됩니다. 개인 키를 사용하여 손상된 서버는 결국 개인 키를 손상시키기 때문에 개인 키를 여러 서버에 배포하는 것은 매우 나쁜 생각입니다.

여러 목적지와 일치

하나를 사용하여 여러 대상 컴퓨터와 일치시킬 수 있습니다 Host. 192.168.35.0/24컴퓨터 B를 통해 프록시 할 특정 컴퓨터 (예 : 위의 예) 내의 단일 컴퓨터 또는 컴퓨터. 또한 별칭으로 사용됩니다.

ssh 192.168.35.27

위의 예에서 컴퓨터 B를 통해 프록시하여 IP 주소를 얻습니다.

데이지 체인 프록시

이 방법을 사용하면 필요한만큼 자동 프록시를 데이지 체인 방식으로 연결할 수 있습니다. 예를 들어 컴퓨터 C에서만 접근 할 수있는 컴퓨터 D 를 추가 할 수 있으며 투명하게 작동합니다.

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerd위의 ssh_config예 에서 컴퓨터 C와 컴퓨터 B를 통해 자동으로 프록시됩니다 .


내가 사용하고 ProxyJump 대신 ProxyCommand의를하고 그것을 잘 작동합니다. 더 많은 옵션이있는 것 같습니다.
fgiraldeau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.