SSH繋がらなくなった

概要

AくんはSSHに関する設定をいろいろいじっていたところ、SSHで繋がらなくなってしまった。
どうやらVNCはそのまま繋がるようなので、原因を特定して繋がるようにしてほしい。

前提条件

  • SSHサーバにはVNCで接続できる

初期状態

  • prob51-ssh-clienからprob51-ssh-serverにSSHで接続できない

終了状態

  • クライアントからサーバにSSH接続できる
  • 適切な問題の原因と解決法が回答に記載されている

解説

この問題は3つのトラブルが原因でした。

1. KexAlgorithms の設定

エラーメッセージから鍵交換方式の設定がおかしいことがわかります。

$ ssh 172.16.0.1
Unable to negotiate with 172.16.0.1 port 22: no matching key exchange method found. Their offer: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1

これはクライアントの .ssh/config に設定された鍵交換方法をコメントアウトしたり、Their offer 以下に書かれた方式を設定するなどで解決します。

2. user というユーザ名でログインができない

サーバの /var/log/secure を見ると以下のメッセージが見つかります。

: User user from 172.16.0.2 not allowed because listed in DenyUsers
: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.51.0.2  user=user
: Failed password for invalid user user from 172.51.0.2 port 45508 ssh2

/etc/ssh/sshd_config を見ると DenyUsers ディレクティブに user が含まれているので、許可されるよう設定します。

ちなみに、この DenyUsers はトラコン運営が選んだわけではなく、CentOSのデフォルトの設定です。

3. 多重接続の設定

エラーメッセージからSSHの多重化でトラブルが起きていることがわかります。

mux_client_request_session: session request failed: Session open refused by peer
Failed to connect to new control master

sshd_config を見ると MaxSessions0 となっているのでこれを修正します。

ちなみに、この MaxSessions というのは同時にSSH接続が可能な数ではありません。デフォルトは10になっていますが、これは11個目のセッションがはじかれるというわけではないのです。