熟すと腐るは紙一重

プログラミングに纏わる話や身の回りの話

僕とsshの2週間戦争

今回はssh接続を鍵認証で行う方法について、僕のつまづいた点をまとめていきたいと思います!
まず初めに、この記事は僕が今学んでいるフィヨルドブートキャンプのプラクティスの話になります。主にここで学んでいる人に向けて書きますが、これからsshで鍵認証を設定する方へもヒントになればと思います。
では早速僕がsshに苦戦し、クリアして行く経緯を振り返って行きます!

日報を見ると、2020年12月23日に「sshの基本を理解する」と言うプラクティスに入っています。さくらのVPSコンソールを使って、Debiansshをインストールするところまでは出来ました。その流れで$ vim /etc/ssh/sshd_config とコマンドを打ち込んで、設定ファイルをvimで変更していこうと思ったのですが、ここでまず詰まります。

vimが!vimがぁぁぁぁぁぁぁぁぁぁぁぁ!!!!

Firefoxのブラウザ上でさくらVPSのコンソールで作業していたところ、vimの挙動がおかしくて、かなりはまってしまいました。

12月25日の日報にもこう記してあります。僕はSlackで質問したり、Q&Aを作成したりして他の生徒に質問をしました。結果的に、FirefoxではなくChromeを使用することでvimの挙動がおかしくなる事象は解決したのですが、原因は分からず時間だけが過ぎて行き、全然進まない状況にかなり疲弊していました。

最初は1時間ほどプラクティスを進めよう〜と言う気持ちで取り掛かったのですが、見事にはまってしまい、深追いしても解決しない・時間だけが過ぎていく・疲弊する。と、負のスパイラルに陥って凹みました。 初学者の壁は高く、厚いです。(頭もオーバーヒート)

12月27日 この日も深夜にかけてもくもくと戦います。

ssh-copy-id -i ~/.ssh/client_rsa.pub nishime@にしめのIPと打つも、通らず、しかも途中からなぜか改行しているのに先頭の文字から上書きされるバグが起こり出し、ため息が出る。。 そこで指摘を受けて気づいたのが、ずっとさくらVPSのコンソール上で作業していたのは、クライアント側(つまり自分のMacのターミナル)でしなければならなかったという事。 クライアントって分かりにくいよ!!!

アホですね。そもそもクライアントって意味を勘違いしていたようです。 プラクティスの説明をよく見ると、図で分かりやすく書いてあるのですが、初学者からするとクライアントってビジネス的には「取引先や顧客」などを意味する為、自分から見て相手側をイメージします。なのでずっとサーバー側で作業していたのですが、この業界ではクライアントがローカル側というのは常識らしいです。にしめのレベルがあがった。
他の人の日報を見ても、同じミスをしている人がちらほら居ました。仲間から指摘で無事間違いに気づいた僕は次の沼に飛び込んで行きます。(また沼かよ!😅)

クライアント側を理解した僕は久々にMacのターミナルを開き、鍵認証のみssh接続を許可するように設定を変更して行きます。 まずはクライアントでキーペアを作成。
cd ~/.ssh
ssh-keygen -f client_rsa -t rsa -b 2048
ls ~/.ssh 結果👉client_rsa client_rsa.pub id_rsa  id_rsa.pub known_hosts
client_rsa client_rsa.pub id_rsa id_rsa.pub known_hosts

そしてクライアントにキーペアの登録
ssh-add -K ~/.ssh/client_rsa
ここまでは順調だった。次に鍵をサーバーに登録(ssh-copy-idコマンドを使った方法)しようとしたのですが、
ssh-copy-id -i ~/.ssh/client_rsa.pub -p 5000 nishime@自分のIPアドレス
と打つと、
/usr/bin/ssh-copy-id: ERROR: ssh: connect to host 自分のIPアドレス port 5000: Operation timed out
となってしまう。(Portは22から5000に変更済み。)

さらに、サーバー側でsudo vim /etc/ssh/sshd_configし、設定を変更するも、:wqで保存終了できず、E45: 'readonly' option is set (add ! to override)となる😓

この度重なるエラーについて、Slackで質問したり、ググったりしたのですが、解決できませんでした。

最終的にどうしたか

叫んだ。

すると、すぐさま仲間やメンターさんが反応してくれ、僕の都合の良い時間でお助け会(スペシャルタイム)を開いてくれることになりました。思ってもみない事態となり、驚きと感謝でいっぱいになりました。 これが、2021年1月5日の出来事です。

そして1月7日。前日の深夜になんとか自分の直面している問題点を日報にまとめ、zoomでお助け会が開かれました。

結果的に何が問題だったのか

sudo journalctl -xeでログを見ていくと、line122と言う表記が見つかりました。sudo vim /etc/ssh/sshd_configを開くと、最上段になにやらswap fileなるものができています。 これは他のプロセスが、編集中に強制終了したりするとできてしまうファイルらしく、おそらく最初にFirefoxのさくらVPS上でvimの挙動がおかしかった際、画面が固まってしまい強制終了したりしていたのでできたものかと思います。
再度sshd_configに戻り、122行目を見ると、知らぬ間にコピペされたコマンドが入り込んでいました。 この行を消すことでsshの起動は問題なくできるようになりました!

次に、vimがreadonlyになって保存終了できない問題です。
先程のswap fileを削除します。コマンドは以下。
ls -la
sudo rm .sshd*
これでswap fileが削除され、vimが変更保存できるようになりました!

無事sshが起動するようになったので、課題の「クライアントにキーペアの登録 」に進みます。しかしここでもまた問題が起きます。(どんだけ〜)
ssh-copy-id -i ~/.ssh/client_rsa.pub -p 5000 nishime@自分のIPアドレスしても返ってこない。こういう時に原因としてよく挙げられるのが、PortかIPアドレスが間違っているという事例らしいのですが、何度確認しても両方合っているんですよね…
そこでメンターさんが自分のローカルでPort5000で接続したり、元々の22で接続したりを試してくれ、22の時はすぐに返ってくるのに、5000だとやたら時間がかかりタイムアウトすることに気づきました!さすがです!w

そうです。このPort5000が良くなかったのでした😓

ウェルノウンポート以外だったらなんでも良いのですが、そのポートが何かに使われたりしていたらダメみたいで、5000は運悪く何かに使われているか、なんらかの原因で接続できないポートだったようです。 と言うわけで、Portをみんなが使っているのと同じ数値(今回は50022)に変更し、事なきを得ました。

まとめ

  • さくらのVPSコンソールはFirefoxを推奨しているが、Chromeの方が無難でした。

  • vimを強制終了したりすると、swap fileができてしまい、:wqで保存終了できなくなる。

  • Portは基本なんでも良いが、5000は辞めた方がいいよ💔

  • フィヨルドブートキャンプの皆んなは優しいし、メンターさんも最高ですので是非入会して一緒に学びましょう!

これで僕のssh2週間戦争は終止符を打ち、無事お正月を迎えることができたのでした。 お世話になった方々、本当にありがとうございました。 また詰まったら、もう少し早くSOSを出したいと思います😇