1. 問題の発生
個人的につかっているAmazon Lightsailに、MacからSSH接続しようとしましたが、
❯ ssh lightsail
ssh: connect to host 203.0.113.72 port 22: Operation timed out
と、タイムアウトしてしまい接続できない問題が発生しました。
2. 問題解決のために実施した手順
まず、接続できない原因としてSSH鍵を疑ってみましたが、なんど作り直しても接続できません。
そもそも、サーバに疎通していないのかと思いましたが、ping
を打てば通ることも確認したため、
接続に必要な情報は揃っているはずです。
さらに、同じネットワークにあるUbutuマシンからは、LightsailにSSH接続することができるため、 Mac側の問題の可能性が高くなっています。
また、サーバ側のログを見ようと思い、まず/etc/ssh/sshd_config
のLogLevel
をINFO
からDEBUG
に変更し、
# Logging
SyslogFacility AUTH
- LogLevel INFO
+ LogLevel DEBUG
また再度Mac側から接続を試みましたがタイムアウトしてしまい、/var/log/auth.log
を確認したところ、ログインを試行している形跡がなかったので、
サーバー側で接続がブロックされているわけではない、と判断しました。
3. 解決策
上記でMac側の問題と判断したので、ssh
の-vvv
オプションで、ログを見てみました。
❯ ssh -vvv ubuntu@203.0.113.72 -i ~/.ssh/lightsail
OpenSSH_9.0p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/username/.ssh/config
debug2: checking match for 'host leo user root' host 203.0.113.72 originally 203.0.113.72
debug3: /Users/username/.ssh/config line 27: not matched 'host "203.0.113.72"'
debug3: /Users/username/.ssh/config line 27: not matched 'user "ubuntu"'
debug2: match not found
debug2: checking match for 'host leo user terraform' host 203.0.113.72 originally 203.0.113.72
debug3: /Users/username/.ssh/config line 31: not matched 'host "203.0.113.72"'
debug3: /Users/username/.ssh/config line 31: not matched 'user "ubuntu"'
debug2: match not found
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug2: resolve_canonicalize: hostname 203.0.113.72 is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/Users/username/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/Users/username/.ssh/known_hosts2'
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug3: ssh_connect_direct: entering
debug1: Connecting to 203.0.113.72 [203.0.113.72] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x48
一番下のメッセージで止まるため、このメッセージでググってみたところ、-o IPQoS=none
にすると解決するとのことだったので、
❯ ssh lightsail -o IPQoS=none
としたら、無事につながりました。
無事につながったので、最後にconfig
ファイルを編集し、以下のように追記します。
Host lightsail
+ IPQoS none
これで
❯ ssh lightsail
とするだけで、つながるようになりました。
5. まとめ
今回の問題は、MacからAmazon LIghtsailにSSH接続する際に、タイムアウトして接続できないというものでした。 解決策としては、Mac側からSSH接続する際に、IPQoSをオプションを無効化することで、接続が成功するようになりました。
SSH接続でうまくいかない場合は、ssh -vvv
でログ確認してみるのは、良い方法だと学びました。
でも、IPQoSって何??