단일 명령으로 컴퓨터 A의 컴퓨터 B에서 컴퓨터 C로 ssh 연결을 설정하여 컴퓨터 C의 셸에 액세스 할 수있는 방법이 있습니까?
주름은 (-L 옵션을 사용하여 ssh 연결을 단순히 전달하는 것을 배제한 것으로 보입니다) 컴퓨터 B의 계정에 암호가 있고 컴퓨터 B의 계정은 컴퓨터 C의 계정에 연결할 수 있지만 컴퓨터 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 -t computer-b "ssh -t computer-c 'ssh computer-d'"
: D
SSH의 ProxyCommand를 사용하고 싶을 수도 있습니다. http://benno.id.au/blog/2006/06/08/ssh_proxy_command
ProxyCommand
참조하십시오 man ssh_config
. 을 사용하는 것이 좋습니다 ProxyCommand
. 원래 시나리오를 보자.
~/.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를 통해 자동으로 프록시됩니다 .