LoginSignup
2
1

【初心者向け】公開鍵認証について学んだことをまとめる【備忘録】

Last updated at Posted at 2024-03-02

任意の環境にSSH接続すれば色々と捗ります。

学ぶメリット

  • 本番環境にGithubからpull
  • Githubからの自動デプロイ
  • SCPやRSYNCコマンドなどでサーバーのデータを高速にDL/UP
  • Dockerとの親和性
  • セキュリティ意識の向上
  • APIを安全に使用できる

基本的な概念

  • まず2種類の鍵を作る
  • 公開鍵を接続する先に持たせる
  • 公開鍵(key.pub)はオープンにしてOK(とはいえ節度は守るべき)
  • 秘密鍵をユーザーに持たせる
  • 秘密鍵は完全に非公開の状態にする

指摘あり修正。
公開鍵はプラットフォーム側に持たせるので、closedではない(秘密鍵はユーザーだけが持つのでclosed)。
ただ公開鍵をSNSで公開するようなものではないよねっていうニュアンスです。

具体的には、公開鍵は南京錠のこと。
秘密鍵は南京錠を開くための鍵のこと。

鍵としての側面だけなら、鍵穴と鍵のセットで開く南京錠の例えはわかりやすい。
しかし本来、公開鍵認証は秘密鍵を持つユーザーを特定するためのもの。
文字通り『鍵+認証』の機能を持つため、南京錠は不適切でした(南京錠の鍵にユーザーを特定する機能はない)。

なので正確には、銀行印の方が的を射ている(参考:公開鍵認証のイメージ)。

実行手順

主に2パターンあると思う。

自分で鍵を作成するケース

ユーザーの端末で
ssh-keygen
を実行。
.sshフォルダ内に、公開鍵・秘密鍵が作成されます。

作った公開鍵をサーバーやGithubなどログインしたいプラットフォームに登録する。
その後は秘密鍵を使ってSSH接続が可能になります。

プラットフォーム側で鍵を生成するケース

プラットフォーム内の鍵を作成するページから作る。
秘密鍵がローカル(=接続するユーザーが持つ)にDLされます。
DLした秘密鍵を使ってSSH接続します。

image.png

※たぶん裏側でssh-keygenか同等の機能を動かしている

接続するためのコマンド例

よく使うコマンドまとめておく。

ssh接続を行う

例えば-p は、Xserverの場合10022。
githubなんかは不要。

ssh -i ~/.ssh/privateKey loginUser@IPaddress -p portNum

アップロード

rsync -avzP -e "ssh -i ~/.ssh/privateKey -p 10022" --exclude 'AAA' --exclude 'BBB' ~/filePath loginUser@IPaddress:~/uploadPath/
  • -a:コピー元ファイルの状態を保持する
  • -v:転送情報を表示する
  • -z:圧縮して送信
  • -P:転送中の情報を表示+転送に失敗したファイルを削除
  • -e:シェルコマンドを実行
  • --exclude:UP/DL対象から外すファイルやフォルダを指定(個別に指定する必要がある)

ダウンロード

アップロードのコマンドから、fileの前後を逆にしただけ。

rsync -avz -e "ssh -i ~/.ssh/xs980405.key -p 10022" --exclude 'AAA' --exclude 'BBB' loginUser@IPaddress:~/filePath/ ~/downloadPath

Githubへの接続確認

まずはGitを実際に使用する環境下のターミナル上で下記を実行。

git init
git remote add origin git@github.com:user/repository
eval $(ssh-agent -s)
ssh-add ~/.ssh/privateKey
ssh-add -l ←確認用なのでやらなくても問題ない

次はGithubへの接続テスト。
エラーが出なければ、とりあえずサーバーからGithubへの接続はできるものと考えてOK。
git cloneやpullなどが使えるようになる。

ssh -T git@github.com

参考文献

ぜひ、より正確に学ぶことをオススメします。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1