여러 호스트를 통한 SSH

여러 호스트를 통한 SSH

내 사무실에 있는 컴퓨터에 액세스하기 위해 현재 다음을 수행하고 있습니다.

me@home:~$ ssh unix.university.com
me@unix:~$ ssh unix.department.univeristy.com
[email protected]:~$ ssh office-machine.department.university.com
me@office-machine:~$ echo "This is very annoying"

이 프로세스를 자동화하는 쉬운 방법이 있습니까? 마지막에 명령을 사용할 수 있습니까?

답변1

예, SSH ProxyCommand와 netcat을 사용하여 이를 수행하는 좋은 방법이 있습니다.

.ssh/config에 이와 같은 것을 넣으십시오.

Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p

그러면 점프/요새 호스트 unix.university.com을 사용하여 .department.university.com 서버에 직접 로그인합니다. unix.university.com 스탠자를 지시해야 할 수도 있습니다.

작동 방식을 설명하는 링크는 다음과 같습니다.http://backdrift.org/transparent-proxy-with-ssh

이 기술을 사용하면 이제 다음과 같이 작성할 수 있습니다.

ssh unix.department.university.com

모든 것이 간단하게 나타날 것입니다. rsync, scp 등과 같은 도구(ssh 스택에 있는 모든 항목)도 투명하게 작동합니다.

답변2

로그인 후 SSH 클라이언트를 사용하여 원격 시스템에서 SSH를 수행할 수 있습니다.

ssh -t unix.university.com \
    ssh -t unix.department.univeristy.com \
    ssh -t office-machine.department.university.com

(이를 호출에 포함시킨 이유 -t는 내 컴퓨터에서 시도했을 때 ssh에서 오류가 발생했기 때문입니다. stdin은 터미널이 아닙니다. 귀하의 컴퓨터는 다를 수 있습니다.)

마지막 셸을 종료하면 프로세스가 연쇄 종료되므로 Ctrl-D반복해서 입력하는 시간이 절약됩니다.

답변3

OpenSSH 7.3에서 ssh는 이 문제를 해결하기 위해 -J명령줄 플래그와 해당 ProxyJump구성 옵션을 추가했습니다.

SSH를 통해 연결하려는 호스트를 쉼표로 구분된 목록으로 제공하세요 -J. 예를 들어:

ssh -J unix.university.com,unix.department.university.com  \
  office-machine.department.university.com

답변4

동일한 사용자 이름을 사용하여 서버 A에서 서버 B로 ssh

Host target
  HostName <serverB_hostname>
  ForwardX11Trusted yes
  LogLevel verbose
  User <username>
  ProxyCommand ssh <username>@<serverA_hostname> -W %h:%p

관련 정보