うつメイトをデプロイしてあるec2に手元のmacからssh接続する
はじめに
前に設定したうつメイトをデプロイしてあるec2へのssh接続ができなくなっていた。
ssh utsumate
としてもssh: Could not resolve hostname utsumate: nodename nor servname provided, or not knownというエラーが出てしまう。
そもそもなにをどうしたら遠隔サーバーにssh接続できるのかがあやふやになっていたので、そこをしっかり固めるために調べながら解決した。
公開鍵暗号方式を使ってssh接続をするのに必要な手順
※ 下記ではローカル環境で秘密鍵を生成し、そこから生成した公開鍵を遠隔サーバーに配置するやり方でやっているが、遠隔サーバーで秘密鍵を生成して、そこから作った公開鍵をローカル環境に配置するやり方でもok
- ローカル環境で ~/.ssh ディレクトリを作成し、読み・書き・実行権限を付与(chmod 700 ~/.ssh)
- ローカル環境で秘密鍵(アプリ名.pem)と公開鍵(アプリ名.pub)を作成する
ssh-keygen -t rsa -f 鍵の名前
で作成される
- 公開鍵の中身をコピーし、遠隔サーバーの
~/.ssh/authorized_keys
に配置する。 この時点で
ssh [ユーザー名]@[サーバーアドレス] -p [ポート番号]
と打てば接続可能。ただし毎回それらを打つのは面倒なので、ssh アプリ名
などで接続できるようにする。ちなみにssh接続をする際のデフォルトポートである22番ポートを使用する際は省略可能。Host アプリ名 Hostname ElasticIP User ユーザー名 IdentityFile ~/.ssh/アプリ名.pem
これで例えばアプリ名をutsumateとしていたのならば、
ssh utsumate
と接続可能
結果
調べている途中で、ローカル環境の~/.ssh/config
に書いていたutsumateサーバー先の設定が消えていたことが原因とわかったため、再度設定しなおしたところ、ssh utsumate
でssh接続できるようになった。
気づいた経緯としては、
- うつメイトサーバーの鍵や設定をいじっていない
- ローカルの鍵を消した覚えもない
- 鍵はお互いに配置されてるはず。
てことはsshコマンドで入力するIPアドレスなどを設定したファイルに問題がありそう?と考えたところあたりだった。
どうもgithubへのssh接続の設定をするときに~/.ssh/config
を上書きしてしまっていたらしい。
感想
ちょっと怪しかったssh接続について理解が深まり、ec2へのssh接続もできるようになってよっしゃという感じ。
鍵の置き場と、設定ファイルの書き方さえ抑えれば簡単だと感じた。