단일 명령으로 중간 서버를 통해 터널 SSH 로그인을 하시겠습니까?

단일 명령으로 중간 서버를 통해 터널 SSH 로그인을 하시겠습니까?

단일 SSH 명령을 사용하여 중간 서버를 통해 SSH를 통해 원격 서버에 로그인하는 방법이 있습니까? 기본적으로 "브리지 서버"에 대한 터널을 만들고 터널을 통해 원격 서버에 로그인해야 합니다.

예를 들어 다음을 단일 ssh 명령으로 압축해 보았습니다.

  1. ssh -N -L 2222:remoteserver.com:22[이메일 보호됨]
  2. ssh -p 2222 원격 사용자 ID@localhost

이것은 현재 작동하지만 SSH 셸을 종료하면 터널이 동시에 닫힐 수 있도록 모든 것을 하나의 명령으로 압축할 수 있기를 원합니다.

내 구성에서 다음을 시도했지만 성공하지 못했습니다.

Host axp
  User          remote_userid
  HostName      remoteserver.com
  IdentityFile  ~/.ssh/id_rsa.eric
  ProxyCommand  ssh -W %h:%p  [email protected]

@jasonwryan 의견을 바탕으로투명한 다중 홉 링크, 다음 명령을 작동시킬 수 있었습니다.

ssh -A -t [email protected] ssh -A [email protected]

하지만 이제 이것을 .ssh/config 파일에 깔끔하게 패키징하고 싶은데 ProxyCommand로 무엇을 사용해야 할지 잘 모르겠습니다. 온라인에서 몇 가지 링크와 @boomshadow의 답변을 보았지만 nc불행히도 netcat은 브리지 시스템으로 사용하고 있던 AIX 서버에 설치되지 않았습니다.

답변1

ProxyCommand가 바로 여러분에게 필요한 것입니다. 우리 회사에서는 모든 DevOps 기술자가 "점프 스테이션"을 사용하여 나머지 VPC에 액세스해야 합니다. 리디렉션 사이트에는 VPN 액세스 제어가 적용됩니다.

점프 사이트를 자동으로 통과하도록 SSH 구성을 설정했습니다.

내 .ssh/config 파일의 편집된 버전은 다음과 같습니다.

Host *.internal.company.com
User jacob
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -q -A jacob@company-internal-jumphost  nc -q0 %h %p

"내부" 하위 도메인의 서버에 "ssh"할 때마다 자동으로 점프 사이트를 먼저 건너뜁니다.

편집하다: 여기있어모두"내부" VPC의 .ssh/config 섹션에서 로그인할 수 있습니다.

# Internal VPC
Host company-internal-jumphost
   Hostname 10.210.x.x  #(edited out IP for security)
   IdentityFile ~/.ssh/id_rsa
Host 10.210.*
   User ubuntu
   IdentityFile ~/.ssh/company-id_rsa
   ProxyCommand ssh -q -A jacob@company-internal-jumphost  nc -q0 %h %p
Host *.internal.company.com
   User jacob
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh -q -A jacob@company-internal-jumphost  nc -q0 %h %p

답변2

OpenSSH 7.3 이상을 사용하는 경우 ProxyJump다음과 같이 사용할 수 있습니다.

$ ssh -o ProxyJump=user1@gateway user2@remote

두 사용자 중 하나가 생략되면 로컬 사용자가 암시됩니다.


간접 로그인 테마의 변형은 간접 파일 전송입니다. 중간 서버를 통해 간접적으로 파일을 복사 scp하고 사용할 수 있습니다 .rsyncssh

게이트웨이를 통해 복사하려면 다음을 사용하세요 scp.

$ scp -oProxyJump=root@gateway myfile user@remote:path

생략 하면 user로컬 사용자가 사용됩니다.

ProxyJumpOpenSSH 7.3에서 도입되었습니다 . 또 다른 방법은 다음을 사용하는 것입니다 ProxyCommand.

$ scp -oProxyCommand="ssh -W %h:%p root@gateway" myfile user@remote:path

게이트웨이를 통해 복사하려면 다음을 사용하세요 rsync.

$ rsync -av -e 'ssh -o "ProxyJump root@gateway"' myfile user@remote@path

또는

$ rsync -av -e 'ssh -o "ProxyCommand ssh -A root@gateway -W %h:%p"' myfile user@remote@path

다른 답변을 설명하겠습니다 (약훌륭한사용자)씌우다간접적인scp그리고간접적인rsync더 자세하게.

답변3

다른 컴퓨터를 통해 SSH를 수행해야 하는 경우 터널을 생성하거나 .ssh/config를 편집할 필요가 없습니다.

내가 찾을 수 있는 가장 간단한 명령은 "jump Host" SSH 매개변수를 사용하는 것입니다.

ssh -J [email protected] [email protected]

참고: 이 기능은 2016년 8월 1일에 출시된 OpenSSH 7.3부터 지원됩니다.

http://www.openssh.com/txt/release-7.3

관련 정보