やまものブログ

メモ書きブログです (^_^;A

SSH についてのメモ ~ github に関連して

GitHub に自分のアカウントとリポジトリを作りました

作り方はこちら↓に親切に解説されていて、そのとおりでしたので、ここでは割愛です。
ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで-


github では認証に SSH(セキュアシェル)を使うことができます。
上記サイトで紹介されている手順でも SSH を設定します。
その SSH について疑問に感じて調べたことが以下のメモです。
  • 疑問1)SSH鍵を複数持つことができるか?YES
  • 疑問2)SSH鍵をコピーして使いまわせるか?YES

両方の疑問に対して回答となる内容を含むブログがこちらです♪
SSH公開鍵認証メモ


まず、SSH鍵を複数持つことができるかどうかについてです。

ssh-keygen のオプション
  [-f output_keyfile]
SSH鍵ペアの名称を変更できるようです。
名称が設定できるということは、複数の鍵を持つこともできそうです(未検証)。

あるいは、
GitLabへの公開鍵の登録
のなかで、
  既に鍵ペアがある場合_
にて紹介されている手順では、ssh-keygen の下記の質問
Enter file in which to save the key (/home/foo/.ssh/id_rsa):
において、デフォルト id_rsa 以外の名称を指定しています。
鍵ファイルの名称を変えられるなら、鍵を複数持てるはずです(未検証)。


次に、SSH鍵のコピーして使いまわせるかについて。

これは実際に試して、認証されることを確認できました。
まず、既に github に認証済のメインのマシンにて SSHキーと config を tar にまとめます。
$ cd ~/.ssh/
$ tar zcvf ~/dot_ssh.tgz config id_rsa*

先週、linuxBeanをインストールしたマシンにもっていって、解凍します。
$ mkdir .ssh
$ tar zxvf ../dot_ssh.tgz

認証を試す前に、このマシンには git が無いのでインストールしました。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install git

github  の設定("SSH keys" )はいじっていませんが、認証の確認、適当なレポジトリのクローン、ともに問題なくできました♪
$ ssh git@github.com
 (補足) "GitHub does not provide shell access."と言われるのは構わないらしい。

$ git clone https://github.com/<account>/<repository>
この結果、カレントに <repository> 名のディレクトリが生成されます。


最後に2点ほど補足。

ssh-keygen には man のエントリーが無いようで、代わりに
$ info ssh-keygen
で使い方の情報を参照できます。


github の認証は SSH なしでも、アカウント・パスワード入力でも可能です。

さらに、それを省く方法もあります。
$ git config --global credential.helper store
ただし、.git-credentials パスワードが平文で保存されるので危ういかも

一定時間、省くだけならこんなのもあるようです(未検証)。
$ git config --global credential.helper cache


SSH は取っつきにくかったのですが、これで少しスッキリして親しみも持てました