Is there a way to use a single SSH key to all instances that I create in my stack?
Or for each created instance, will I need to enter SSH, generate the SSH key and add it to GitHub Deploy Keys?
In OpsWorks for each GitHub repository that you want to deploy to your instances, you need to set up an app (under Apps). There you input your repository address and SSH key for accessing the repository. So one key per repository.
Then when you do "App Deploy", OpsWorks will automatically take this key and place it on the instance, the same directory as your code and will use it to pull the code from the repository.