Teaching ssh vs. https when cloning?

Hi folks,

I’m teaching an data science with R/Git class to a group of about 40+ ecology graduate students using Github Classroom. So far it’s been great, really happy with the ability to send a link with some pre-assigned content in a repo, and they all create repos in our organization. We are going to try some code review (students have to run each others code to see if it works), and eventually incorporate pull requests and maybe branching if things go well.

One of the things that is always a bit chaotic is the initial set-up…getting everyone to the point they can successfully push changes back to Github. Last year I taught everyone how to set up an ssh key for 2FA, but we run into a lot of folks who have never used command line ( :shell: ), so it can be really difficult right at the start. https seems to be a bit easier, so I’m debating just doing away with ssh completely and sticking with https.

I’d love to hear some thoughts on folks who have taught one or both, and why they prefer one or the other. They each have benefits depending on what you might be using/doing, but when teaching beginners… :thinking: :skull_and_crossbones:?


Hi @ryanpeek! My name is Briana, and I’m a trainer for GitHub. I spend a lot of time doing exactly what you described in your post.

On the training team at GitHub, we always default to cloning with HTTPS. It allows us to focus on the GitHub and the Git parts, and solidify the workflow. If a user has 2 factor authentication or is really interested, we’ll help them get set up and learn how to use it, but it’s always after we take the rest of the class through HTTPS.

That’s just my two cents - I do think 2 factor auth is always a good idea. Good luck!


In a Python course I help deliver we just use https and the IDE saves the users git password.
The reasoning being we are teaching python with version control and so concentrate on that.
It we were teaching Linux shell and version control then ssh would be the way to go.

I’d say decide on your learning objectives and try to make the rest as streamlined as possible.

Good luck!

Great thanks much!

I’ll echo what was said above, I’m a fan of just using https for everything. Using ssh quickly turns into a rabbit hole of shell commands and public / private key details that while certainly useful are not often particularly relevant at the time. My first year I tried the ssh path and it resulted in a week of troubleshooting and handholding, I’ve used https since and it has been much smoother.

One other piece of advice that I forget regularly is to make use of credential caching if are using an IDE that don’t save passwords (e.g. RStudio) since this will reduce the students frustration and hopefully encourages them to push more frequently.

git config --global credential.helper 'cache --timeout=<a suitable large number>'

Please information student graduates using github community code.

@tanyushaya hi there–please reach out to education.github.com/contact

@ryanpeek agree with @brianamarie though I usually grab the URL and add as remote that way.

1 Like