うつメイトをデプロイしてあるec2に手元のmacからssh接続する

はじめに

前に設定したうつメイトをデプロイしてあるec2へのssh接続ができなくなっていた。

ssh utsumate

としてもssh: Could not resolve hostname utsumate: nodename nor servname provided, or not knownというエラーが出てしまう。

そもそもなにをどうしたら遠隔サーバーにssh接続できるのかがあやふやになっていたので、そこをしっかり固めるために調べながら解決した。

公開鍵暗号方式を使ってssh接続をするのに必要な手順

※ 下記ではローカル環境で秘密鍵を生成し、そこから生成した公開鍵を遠隔サーバーに配置するやり方でやっているが、遠隔サーバーで秘密鍵を生成して、そこから作った公開鍵をローカル環境に配置するやり方でもok

  1. ローカル環境で ~/.ssh ディレクトリを作成し、読み・書き・実行権限を付与(chmod 700 ~/.ssh
  2. ローカル環境で秘密鍵(アプリ名.pem)と公開鍵(アプリ名.pub)を作成する
    1. ssh-keygen -t rsa -f 鍵の名前 で作成される
  3. 公開鍵の中身をコピーし、遠隔サーバーの~/.ssh/authorized_keysに配置する。
    1. 遠隔サーバーでも~/.sshディレクトリを作成した後chmod 700 ~/.ssh で権限を与える
    2. vi ~/.ssh/autorized_keys として開き、そこに公開鍵の中身をペーストする。
  4. この時点でssh [ユーザー名]@[サーバーアドレス] -p [ポート番号] と打てば接続可能。ただし毎回それらを打つのは面倒なので、ssh アプリ名などで接続できるようにする。ちなみにssh接続をする際のデフォルトポートである22番ポートを使用する際は省略可能。

     Host アプリ名
     Hostname ElasticIP
     User ユーザー名
     IdentityFile ~/.ssh/アプリ名.pem
    
  5. これで例えばアプリ名をutsumateとしていたのならば、ssh utsumateと接続可能

結果

調べている途中で、ローカル環境の~/.ssh/configに書いていたutsumateサーバー先の設定が消えていたことが原因とわかったため、再度設定しなおしたところ、ssh utsumatessh接続できるようになった。

気づいた経緯としては、

  • うつメイトサーバーの鍵や設定をいじっていない
  • ローカルの鍵を消した覚えもない
    • 鍵はお互いに配置されてるはず。

てことはsshコマンドで入力するIPアドレスなどを設定したファイルに問題がありそう?と考えたところあたりだった。

どうもgithubへのssh接続の設定をするときに~/.ssh/configを上書きしてしまっていたらしい。

感想

ちょっと怪しかったssh接続について理解が深まり、ec2へのssh接続もできるようになってよっしゃという感じ。

鍵の置き場と、設定ファイルの書き方さえ抑えれば簡単だと感じた。