ssh接続が出来なくなったので対処した話

SSHD読み込みエラーとMacSSHの更新

Webサーバーに対してSSH接続が出来なくなる事態に陥っていました、今回の問題は非常にややこしいことが重なって起きてしまった事態なので記録しておきます。

エラー内容は以下の通り

$ ssh 【接続先のサーバー名.com】
ssh: connect to host xxx.xx.xxx.xx port xxxxx: Connection refused

 

Connection refusedで検索してみると、こんな記事が

linux – SSHで接続しようとすると connection refused と表示される – スタック・オーバーフロー

この記事の回答で、

  • IPアドレス(この場合 192.0.2.1)が間違っていて、別のPCを指している
  • 接続先で sshd が起動していない
  • 接続に使うポートが間違っている
  • ファイアウォールによって通信が遮断されている

という内容がありました、これをヒントに問題を解決してみました。

 

 

1.sshd.service(Cent OS 7)が起動していない

結果だけ記載するとエラーはこの部分で発生していました。

systemctl restart sshd.service
[結果]
-- Unit sshd.service has begun starting up.
 x月 xx xx:xx:xx server:url systemd[1]: Failed to start OpenSSH server daemon

どうやらSSHDを起動する際に、OpenSSH server darmonという部分が見つからない様子。

修復方法が分からないので、OpenSSH自体を更新してしまおうと行動します。

 

CentOS7のOpenSSHの更新(セキュアなサーバを作ろう) | Webフリーランスとして働く

この問題を解決できたのはこちらの記事。OpenSSHそのものを全て更新して、破損している部分ごと新しくしてしまおうということをしました。

上記の内容を実行したところ、問題なくバージョンアップ完了できました。SSHの問題においては新しく入れ替えれば解決する、でした。

 


2.MacのSSHが新しくなっていた

自分の場合は上の内容だけでは解決しなかった・・・。

OpenSSHを更新して無事に繋がる!と思っていた矢先、接続不良自体は解決したのですが新たな問題が。

Macのターミナルから接続すると以下のようなエラーが発生。

$
Unable to negotiate with xxx.xx.xxx.xx port xxxxx: no matching host key type found. Their offer: ssh-dss

一致するホスト鍵タイプが見つかりません、とかなんとかでてきました。

 

どうやら、MacOSのバージョンを更新したことでSSHが古い接続方法を遮断している?というエラーらしいです。
昔は良かったけど、セキュリティ的にレベル低いのでもっと安全な方法で接続してね、という感じの。

解決方法は

[MacPC] + [サーバー内]$ vim ~/.ssh/config 

Host *
  HostKeyAlgorithms +ssh-dss
  UseKeychain yes

MacPCと接続先の ~/.ssh/config(無ければ作る)に、3行目(Host *)から始まるコードを記入。

すると古い接続方式でも対応してくれて、正常に接続できるようになりました!

参考:macOS SierraにおけるSFTP接続エラーについて – Panic Library

 

 

振り返ってみて

今回のエラーは正直意味が分からないほど難しかったです。

検索しても的を得た答えが見つからなかったので、全然関係ない処理とかを散々やってしらみつぶしで辿り着いた感じです。まさか2つもエラーが重なって発生している問題だとは到底思わなかったり。

破損して正常に動かないわけで無く、アップデートによって非対応?になったのも原因の様子です。その度にSSHしておかないと、時差が開くと原因を忘れてしまうことを学びました。

今回はジャーナルログの使い方も分かったので勉強になったと思われます。エラー発生時には、エラー文章を翻訳に掛けるだけで大分理解出来ることも感覚掴んできたので。結構成長できた出来事だったと感じます、いやいや良かった。