HTTPS連携とSSH連携の特徴やちがい
はじめに
GitHub や Bitbucket を使って作業していると、「HTTPS と SSH、結局どっちで連携するのが正解なんだろう?」と、ふと思いました。
HTTPS、SSH。言葉は知っているし、なんとなく使ってもいる。でも「なぜそれを選んでいるのか?」と聞かれると、うまく説明できない。今まで、なんとなくでやってきてしまっていました。
いいかげん勉強しようと調べてみたので、自分用のメモとして残しておきます。
HTTPS 連携とは何か
HTTPS 連携の場合、リポジトリの URL は https://github.com/ユーザー名/リポジトリ.git のような形になる。
この方法では、GitHub にアクセスする際に Personal Access Token (PAT)(いわば合言葉)を使って認証する。
SourceTree などの GUI ツールを使っていると、ブラウザでログインするだけで設定できるので手軽。
一方で、PC を変えたときやトークンの期限が切れたときには、再ログインが必要になることがある。
「まずは動かしたい」「学習中で、環境がまだ固まっていない」そんな段階では、HTTPS は相性が良い。
SSH 連携とは何か
SSH 連携の場合、リポジトリの URL は git@github.com:ユーザー名/リポジトリ.git のような形になる。
こちらは少し仕組みが違っていて、自分の PC に「秘密鍵」を作り、GitHub に「公開鍵」を登録することで認証する。
最初の設定は HTTPS より少し手間がかかる。ただ、一度設定してしまえば、その後は毎回ログインする必要がない。
トークンの期限切れもなく、同じ PC を使い続ける前提なら、かなり快適。
セキュリティ的にどちらが上なのか
調べる前は、「SSH のほうが上級者向けで、HTTPS は弱いのでは?」というイメージを少し持っていた。しかし、
- HTTPS が危険、ということはない
- SSH が特別に優れている、という話でもない
では、どう選べばいいのか
- 今すぐ困らず使いたい、設定を簡単に済ませたい → HTTPS
- 同じ環境で長く使う、ログインの手間を減らしたい → SSH
個人的な学び
最初は「HTTPS と SSH、どっちが正解なんだろう」と考えていた。
ただ、実際には、「自分は今、どんな使い方をしていて、何を重視しているのか」を整理する必要があった。
まとめ
- HTTPS と SSH に正解・不正解はない
- 自分の状況に合わせて選べば良い
Discussion