단일 명령으로 중간 시스템을 통해 ssh 연결 터널링 C의 셸에 액세스 할 수있는 방법이 있습니까? 주름은

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

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



답변

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

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

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


답변

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


답변

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

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

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

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


답변

사용하다 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를 통해 자동으로 프록시됩니다 .


답변