--- title: "SSH tunnel connections" description: "How to connect Materialize to a Kafka broker, a MySQL database, or PostgreSQL database using an SSH tunnel connection to a SSH bastion server" menu: main: parent: "network-security" name: "SSH tunnel connections" aliases: - /integrations/postgres-bastion/ - /ops/network-security/ssh-tunnel/ - /connect-sources/ssh-tunnel/ --- {{% network-security/ssh-tunnel %}} ## Create a source connection In Materialize, create a source connection that uses the SSH tunnel connection you configured in the previous section: {{< tabs tabID="1" >}} {{< tab "Kafka">}} ```mzsql CREATE CONNECTION kafka_connection TO KAFKA ( BROKER 'broker1:9092', SSH TUNNEL ssh_connection ); ``` You can reuse this Kafka connection across multiple [`CREATE SOURCE`](/sql/create-source/kafka/) statements: ```mzsql CREATE SOURCE json_source FROM KAFKA CONNECTION kafka_connection (TOPIC 'test_topic') FORMAT JSON; ``` {{< /tab >}} {{< tab "PostgreSQL">}} ```mzsql CREATE SECRET pgpass AS ''; CREATE CONNECTION pg_connection TO POSTGRES ( HOST 'instance.foo000.us-west-1.rds.amazonaws.com', PORT 5432, USER 'postgres', PASSWORD SECRET pgpass, SSL MODE 'require', DATABASE 'postgres' SSH TUNNEL ssh_connection ); ``` You can reuse this PostgreSQL connection across multiple [`CREATE SOURCE`](/sql/create-source/postgres/) statements: ```mzsql CREATE SOURCE mz_source FROM POSTGRES CONNECTION pg_connection (PUBLICATION 'mz_source') FOR ALL TABLES; ``` {{< /tab >}} {{< tab "MySQL">}} ```mzsql CREATE SECRET mysqlpass AS ''; CREATE CONNECTION mysql_connection TO MYSQL ( HOST '', SSH TUNNEL ssh_connection, ); ``` You can reuse this MySQL connection across multiple [`CREATE SOURCE`](/sql/create-source/postgres/) statements: ```mzsql CREATE SOURCE mz_source FROM mysql CONNECTION mysql_connection FOR ALL TABLES; ``` {{< /tab >}} {{< /tabs >}} ## Related pages - [`CREATE SECRET`](/sql/create-secret) - [`CREATE CONNECTION`](/sql/create-connection) - [`CREATE SOURCE`: Kafka](/sql/create-source/kafka/) - [`CREATE SOURCE`: MySQL](/sql/create-source/mysql) - [`CREATE SOURCE`: PostgreSQL](/sql/create-source/postgres/)