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,curve25519-sha256@libssh.org,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
を見ると MaxSessions
が 0
となっているのでこれを修正します。
ちなみに、この MaxSessions
というのは同時にSSH接続が可能な数ではありません。デフォルトは10になっていますが、これは11個目のセッションがはじかれるというわけではないのです。