점프 서버를 통한 SSH 전달

점프 서버를 통한 SSH 전달

전체 면책 조항: 저는 데이터 세계에서 왔으며 Unix 및 네트워킹에 대한 경험이 제한적입니다.

  • 저는 Linux 5.15.36에서 Mysql을 실행하고 있습니다(예:서버 A), 그리고 Linux 5.10.102(서버 B).
  • ~에서서버 B도착하다서버 A, SSH를 통해 연결할 수 있습니다.
  • 그런 다음 서버리스 환경에서 실행되는 SQL 클라이언트가 있습니다.서버 C) 저것SSH를 사용할 수 없습니다인증에 사용됩니다. 연결 및 인증을 위해 사용자/비밀번호, 포트, 서버 주소 등 SQL 프로토콜을 사용합니다.

내가 설명한 제약 조건을 고려하면 점프 서버를 통해 터널을 어떻게든 구성하여 SQL 클라이언트가서버 C실행 중인 mySQL 데이터베이스에 연결합니다.서버 A?

답변1

잘못된 답변:

From what you decscribe, the following setup should satisfy your needs:

 1. Configure a ssh ProxyJump to Server A via Server B
 2. Open a tunnel to Server A via Server B forwarding localhost:3306 to Server_A:3306

The configuration for the tunnel would be specified in `~/.ssh/config` like this:


```
Host ServerA
 HostName FQDN.SERVER-A
 # your user and ssh key for ssh to server A
 User <the user>
 IdentityFile <users ssh key>
 # Be sure `user` can ssh to server B from server C
 ProxyJump [email protected]
 LocalForward localhost:3306 localhost:3306

```

Then open the tunnel from ServerC with

```
ssh -N -f ServerA
```

and then try the `mysql-client` on ServerC.

If you have problems, first try `ssh ServerA` after killing the backgrounded ssh above, and see if that works.

정답이길 바랍니다:

  1. 서버 B에서 전달 구성을 만듭니다.
  2. a를 사용하여 ServerA 및 ServerB에서 사용자를 생성하고 ssh keypairServerA에 공개 SSH 키를 입력합니다..ssh/authorized_keysssh-copyid ..
  3. ServerA에서 ServerB로 한 번 로그인하면 호스트 키 항목을 생성하거나 호스트 키 확인을 비활성화할 수 있습니다(아래 참조).
  4. 서버 B에서 서버 A로 터널을 엽니다.
  5. MySql을 통해 서버 C에서 서버 B로 연결합니다.

1.) ServerB의 전달 구성(여기서는 사용자 구성으로 수행됩니다. SSH 서버 구성을 통해서도 수행할 수 있지만 지금까지는 사용하지 않았습니다)은 다음 /home/sshuser/.ssh/config과 같습니다.

Host ServerA
 HostName FQDN.SERVER-A
 # your user and ssh key for ssh to server A
 User <the user>
 IdentityFile <users ssh key>
 LocalForward LAN-IP-SERVER-B:3306 LAN-IP-SERVER-A:3306
 # disable host key checking
 # StrictHostKeyChecking no

2.) ServerB에서 SSH 로그인 사용자 및 SSH 키 쌍을 생성하고 ServerA에서 사용자를 생성한 다음 SSH 공개 키를 ServerA에 복사합니다.

root@ServerA $>useradd sshuser
root@ServerA $>passwd sshuser
....
root@ServerB $>useradd sshuser
root@ServerB $>sudo -i sshuser
sshuser@ServerB $>ssh-keygen -t rsa -b 2048
sshuser@ServerB $>ssh-copyid sshuser@ServerA
...

3.) 다음과 같은 경우 ServerB에서 ServerA에 로그인합니다.엄격한 호스트 키 확인활성화됨:

sshuser@ServerB $> ssh sshuser@ServerA

4.) ServerB에서 ServerA로 터널을 엽니다.

sshuser@serverB: $> ssh -N -f ServerA

5.) 그런 다음 서버 C에서 MySQL 클라이언트를 사용하여 다음에 연결합니다.

mysql://mysluser-on-server-a:password@ServerB:3306

당신은 다음에 연결될 것입니다ServerA의 자격 증명서버 B로 전송되고 SSH 터널을 통해 자동으로 서버 A로 전달됩니다.

다음 단계는 2단계에 설명된 대로 이 작업을 수동으로 수행할 필요가 없도록 ServerB에서 ServerA로의 터널을 자동으로 설정하는 것입니다.

참고: 사용자가 특정 원격 호스트를 사용할 수 있도록 하려면 MySql ServerA에서 로그인 권한을 조정해야 할 수도 있습니다.

관련 정보