내 사무실에 있는 컴퓨터에 액세스하기 위해 현재 다음을 수행하고 있습니다.
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