Using IDEs¶
This guide walks you through connecting to a Faculty server from your local IDE using SSH. We cover two IDEs: PyCharm Professional Edition and Visual Studio Code. Connecting your IDE to a Faculty server allows you to combine the benefits of your IDE’s development features (e.g. code completion, code navigation, and debugging) with the benefits of Faculty.
Set up¶
Authorised keys specify which users are allowed to log into a server using public key authentication in SSH. The following steps guide you through generating an SSH key pair and adding the public key to the authorised keys on Faculty. You only need to do this once.
On your local machine, make sure you have the latest version of the Faculty command line client installed (see Installation on MacOS and Linux).
On your local machine, generate an SSH key pair (public key and private key) with
ssh-keygen
.On a server, add the public key you created to
~/.ssh/authorized_keys
. Each line of this file contains one key. For example:# ~/.ssh/authorized_keys ssh-rsa AAAAB3Nza...LiPk user@example.net
Connecting your IDE¶
Follow the steps below to connect your IDE to a running Faculty server.
To connect to the server over SSH, you need to know the
hostname
,username
andport
. You can fetch these details with the following command:$ faculty server ssh-details <project> <server>
If everything is working correctly, you should now be able to SSH into the server with
ssh <username>@<hostname> -p <port>
.Note
This guide is focused on connecting your local IDE to Faculty.
faculty shell <project> <server>
is the preferred way to SSH into a server ( see SSH into a server for more details).Configure your IDE to connect to the Faculty server.
The Visual Studio Code Remote - SSH extension allows you to open a remote folder on any remote machine and run commands and other extensions directly on the remote machine.
In PyCharm Professional Edition you can configure a remote Python interpreter on a server and copy your sources to a Faculty server by creating a deployment configuration.