いえ、別に私はブラック指令ではありません。(またわかりにくいおじさん向けギャグを......)
私はどうも、MacやVAIOが好みではありません。
いえね、別にビッグネームブランドに対するアンチではないのです。そうではなくて、この2つのブランドに共通する1つの姿勢......つまり、「なるべくユーザーに中身を知らせまい」という設計思想、これが好みじゃないのです。
わかってます、そういう考え方も確かに1つの考え方であると。正直なところ、年老いた両親や義親にタブレットをプレゼントするとしたら、AndroidではなくiPadですよ。迷うことなく。
でもねえ、自分にとってはコンピュータ(スマホ・タブレット含む)は道具で、だから隅から隅まで知って、弄くり回せて、動作も構造もある程度のレベルで知っているwindows(まあ、さらにDOS)やLinuxやAndroidを選びたくなるのです。iPad使ってますが、内部のディレクトリ構造とかわからなくてなんか気持ち悪い思いしてます。いや、見る方法があるのは知っているのだけど。
(ちなみにVAIOはwindowsマシンですが、macと同じように内部を隠そう隠そうとするソフトウェア設計思想で出来ています)
これはどういうことかというと、ソフトウェア設計者側が想定した使用の仕方をしている限りとても快適で楽でトラブルも起きにくいのですが、想定からややはずれた使い方をしようとすると途端に、いろいろめんどくさいことやトラブルが起きると言うことなのです。例えば自分で、好みのソフト入れようとかね。
iPadでも、普段使いだとディレクトリなどと言うモノの存在はまるっきり意識させないのですが、他のコンピュータからファイルを送ってiPad上で処理しようとしたら、どうやって送るか、送ったファイルはどこにしまわれているのか、そして目的のソフトでそのファイルにアクセスするにはどうしたらいいのか、もう五里霧中です。ちゃんと連携を謳っているソフトを使う限りはちょいちょいと出来るんですが、何らかの理由でそのソフトを使わないでとなると、もうめんどくさいめんどくさい。
なので、自分で選ぶときにはWindowsマシンになるワケですが(さすがにライター仕事にLinuxはあまり向いていない)、自分で選べないときと言うのもありましてね。
今回がまさにそれなのです。以前も述べたとおり、macを使わなくちゃならないことになったのです、仕事で。
Gitというものがありまして。ソフトウェアなどの多人数での開発を容易にする、ファイルの世代管理システムです。といってもわからない人には何が何だかわからないかも知れませんが、まあ早い話、サーバにみんなで開発してるプログラム類をアップして、みんなで一度に触りまくっても混乱しないように管理するシステムだと思ってください。
で、サーバにアップするので、とうぜん、サーバに接続せにゃなりません。
サーバ接続にはいろんな方法がありますが、現在主流の(つまり手間と速度とセキュリティの硬さのバランスが取れた)接続方式がsshというやつです。
セキュリティというと、まず「パスワード」というのが思い浮かぶと思うのですが、これより遙かに固いわりにはお手軽さではあまり変わらない「鍵認証」という方法をとっています......事前準備はちょっと必要ですけども。
鍵認証には3つの要素が必要です。秘密鍵(と呼ばれるファイル)、公開鍵(と呼ばれるファイル)、それにパスフレーズ(=まあ、パスワードと同じと思ってもらって問題ありません)。パスワードだけで管理するセキュリティより3倍くらい固いだろうというのは、理屈を知らない人でも想像出来ると思います。(実際は3乗倍以上頑丈)
凄く乱暴な例えであることを承知の上で言えば、秘密鍵はキャッシュカード、公開鍵はATM(=銀行コンピュータに登録されたデータ)、それにパスフレーズは暗証番号。キャッシュカード、ATM、暗証番号と3つ揃わないとお金は降ろせませんね。(まあこの例だと、ATMはあるのが当たり前すぎて、わざわざ言われないとわからないと思いますけども)
Gitでもsshを使って繋ぎます(https認証も出来るけど)。つまり、公開鍵をサーバに登録、秘密鍵とパスフレーズを使ってアクセス。
これが上手く行かないんだ。おかしい。
他のmacでは繋がる。でもなんでか、俺のmacだけ繋がらない。
とある事情(あまり深くは語れない)から、1つのアカウントで数台のmacを繋がなくちゃならない。わかってますよ、セキュリティ上あまりよろしくないことは。でも仕方ない、クライアントさん側の要求なのだから。なので、公開鍵は1つ、秘密鍵は使い回し。
ある意味、設定は丸写しでいいことになるので、楽は楽.........なハズだったのに。
繋がらない。
エラーメッセージがまた、ヒジョーにシンプルでしてねえ。
「Permission denied:pubric key」
公開鍵に権限がありません、だと。
よくわからん。
公開鍵にアクセスする権限がないのか、公開鍵がアクセスしようとしているところに関して権限がないのか、それともアカウント情報のユーザー名やパスコードが間違っているのか、あるいは秘密鍵が間違っているのか、なんの情報にもならない。
sourceTreeというgit用のアプリを使っても、ターミナルから直接繋いでもダメ。
一時期は自分のmacの秘密鍵を入れたディレクトリの権限がおかしいんじゃないかとも疑いましたが、よく考えるとそんなはずはないだろうというエラーメッセージなんだが、でも悩んで迷走している最中はどんなことも疑わしくなるのよね。特に自分で設定したところは。
もちろん、グーグル先生には何度も何度も何度も、言葉を変え、聞き方を変え、お尋ねしましたよ。でもねえ、ほとんど役に立ちません。
まず、macという段階で情報が少ない。LinuxやfreeBSDのを参考にあーでもないこうでもないと適当に置き換えて当てはめてみるもダメ。
さらに秘密鍵を使い回しの、1つのアカウントを別のマシンから使い回しの、同時アクセス。こんなの、そうそう例はありません。セキュリティ的に問題ありそうだもんなー。
さらに、通信方式とかgitとかの根本的知識が俺に足りなかったのがダメ。いや、俺だって自家サーバ立ち上げているくらいですからそこそこ知識はあるつもりでしたよ。でも、だめ。アプリとかに指示されるままやって設定してたってことだよな、これは。
初心者向けのページを読めばいいじゃないか、と言われるかも知れませんが、そういう初心者向けのgitは自分でアカウント作るところからやってみようというのばかりで、既にあるアカウントに繋ぐ方法はほとんど書かれてないんですよ。
いっそ最初からアカウント作り直せたら、どんだけ楽か。
と、グチはこれくらいにしておきまして。
結局なにが原因だったかと言いますと、ssh-addという認証エージェント(というアプリ)でした。いや、それとsourceTreeの仕様か。
認証エージェントとは、先ほどのsshの秘密鍵を管理してくれるソフトです。一箇所ならともかく何カ所も繋ぐ先があるような場合、とても役に立つソフトです。登録しておけばつなぎ先に合わせて、適切な秘密鍵ファイルを使ってくれるという。パスフレーズも記憶してくれてます。windowsやLinuxでもこのジャンルのソフトはありますが、macの場合、標準で入っていて、こっそり動いています。
これを使ってsourceTreeというgit用のアプリも動いていまして(というか、これを外す方法もあるハズなんだが、メニューを見て回った限りではなかった......)。逆に言うとね、認証エージェントに登録してないと、わざわざいろいろsourceTreeの設定を指定し直さない限り繋がらないのですよ......たぶん(そしてその設定の仕方は、事態が解決した今も俺は知らない。ひょっとしたらないのかも知れない......)。
普通は、macでアカウントで公開鍵・秘密鍵を生成、登録する過程で自動で登録されます......生成・登録すればね。自動で登録されるので普通のmacユーザーは認証エージェントアプリssh-addを意識することはありません。当然、アカウント登録からやってみましょうというような記事に書かれているわけもなく。
ところが、私は今回、生成・登録はやっておらず、他機からコピーしてきただけ。認証エージェントアプリssh-addには登録されていないわけです。なので、sourceTreeの方でも使えず、弾かれていたわけですよ。
......あ。今気が付いたけど、コマンドラインから秘密鍵ファイルを指定してアクセスしようとしたときも弾かれたな。あれ、そうするとmacじゃどうやってもssh-add無しではアクセス出来ないってことか?
う~む。結局、やっぱりオレはまだ知識が足りないようだ。
とにかく、以下のページを参考にして、ssh-addに鍵の在処を登録、なんとか繋がるようになったのでした。
$ssh-add hoge/fuga
これだけのコマンドなんですけども、鍵を生成するときに使ったパスフレーズを聞かれるので、ここでも問い合わせのために作業が止まったり。
これというのも全て、macが余計なお節介で認証エージェントを自動で動くようにしておいたり、それを特に断りもなく使ったり、そもそも自動登録にしておいたりしてくれちゃったおかげですね。ここで、冒頭の文章につながるわけです。
macを結構使いこなしている人でも、認証エージェントアプリssh-addの存在を知らない人、多いんじゃないだろうか。ネットをみた限り、そんなふうに思える。
(認証鍵使いまわしているお前が悪い? 大人には自分でどうにもならない事態ってのもあるもんなのよ)
コメントする