QA@IT

ハイポートでさくらのVPSにSSHで繋げない時の対処法

4618 PV

さくらのVPSで今まで問題なく使えていたSSHが
特に設定変更をしていないはずのに使えなくなってしまい
色々試していたらデフォルトポートの22番なら使えることがわかりました。

設定の確認及び変更をするために

/etc/sysconfig/iptables

-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT

/etc/ssh/sshd_config

Port 10022

と設定を行い

# service sshd restart
# service iptables restart

でサービスを再起動して接続を試みることを
ハイポートの番号を変えて2度行いましたが接続できませんでした。
接続はWindows上のPuttyとそのVirtualbox上で動かしているUbuntuで行いました。
また別の回線からもMacbookからSSH接続をしてみましたが失敗しています。
ですのでローカル側ではなくVPS側の問題だと考えています。

接続ができなくなった少し前にnmapでポートスキャンを試していたので
それが原因で接続が制限されたのかとも思いさくらのサポートセンターに問い合わせてみましたが
特に制限は行われていないとの回答をもらっています。

それと関係ないとは思うのですがメモリが少なくなっていて接続できないこともあるという情報をみたため
echo 3 > /proc/sys/vm/drop_cachesでメモリの開放を行いました。

sshの接続が失敗する時にエラーメッセージは "Connection timed out"で、
nmap -p 10022 server をした時の結果は "STATE: filtered, SERVICE: unknown" になります。

自分にはこれ以上どこを調べたら良いかもわからないお手上げ状態なのですが
以上のような状態で他にどこをどうやって調べれば
何故ハイポートでの接続がうまくいかないか原因がわかるのでしょうか?

  • RH系のようですが、OSはなんですか?nmapはどこからVPSへやの結果ですか? -
  • OSはCentOS6でnmapはローカルホストからVPSへ行ったため攻撃だと判断されたかと考えました。ネットで情報を探してる時にさくらは攻撃が発生してるとネットワーク上で弾くことがあるというのを見かけましたので。 -
  • ポートが原因なのはわかりましたので、あと確認できるとすれば、VPS上で lsof -i :10022 して他のプロセスに使われていないか、ローカルのLinux/Macでtracerouteでポート指定して経路を見てみるぐらいでしょうか(Winのtracertはポート指定できなかった気がします)。 -
  • 以下は環境によりますので、「私だったら」というやり方ですが、10022でWebサーバーを立てておいて、別の接続元(ISP)でもだめか確認したり、さくら以外のVPS/レンタルサーバーからCGIかcronつかってVPSにwgetしてみますね。これでつながる経路があればさくらの制限ではないと言えますので、自分側のネットワークの問題と切り分けられます。 -
  • ごめんなさい、上の二つは自分の回答にぶらさげるつもりが質問にコメント書いてしまいました。 -

回答

問題の切り分けとして、

  • ポートの疎通確認として、Webサーバー(面倒ならpythonやnodejsで簡易サーバー)など、ssh以外のポートを指定可能な別のサービスを立てて通信できるかためしてみる。

  • VPSからVPS(新しいポート)にsshで接続できるかどうか確認する ssh localhost -p 10022
    (ポート設定が変更ではなく追加であったり、ssh以外で入れるコンソールなどがあれば可能と思います。)

こういった確認はすでに済んでいますか?

Webサーバーの方は、python 2.6, 2.7 とかなら

cd /tmp
mkdir pathname_you_like
cd pathname_you_like
echo work! > index.html
python -m SimpleHTTPServer 10022

で、簡易サーバーが起動できます。

カレントディレクトリ以下がサーバーのドキュメントディレクトリになります。

あくまで簡易サーバーですので疎通確認したらctrl+cで速やかに落としてください。


追記

ちなみにSELinuxの設定はどうなっていますか?(起動している/していない、設定した/設定していない)

追記 8/29

10022ポートはwikiの影響でみんなしてそのポートにしてしまっているので
すでに元の目的(ポートを秘密にしてセキュアにする)
を達成出来なくなっています。
ただ既に設定しているサーバーはあるはずなので安易に閉じられる事はないと
思うんですよね(希望的観測ですが)。

なんにせよこだわりが無ければ別のポートにしてしまうのが手っ取り早いでしょうね。

それとは別で調査自体は勉強になるので面白いですが。

編集 履歴 (4)
  • ・Webサーバーで確認してみました。 10022番では表示できず、試しに888番で試してみたらローカルのWindowsからブラウザで表示できました。
    ・ローカルでのssh通信はできました。(鍵の登録はしていないのでそこで弾かれますが。)
    ・SELinux は getenforce で確認した所 Disabled になっています。設定をした覚えはないのですが、はっきりとは覚えていません。
    -
  • このような状態でした。やはり自分にはハイポートが弾かれているように思うのですが、他に何か確認すべき点はあるでしょうか? -
  • ポートが原因なのはわかりましたので、あと確認できるとすれば、VPS上で lsof -i :10022 して他のプロセスに使われていないか、ローカルのLinux/Macでtracerouteでポート指定して経路を見てみるぐらいでしょうか(Winのtracertはポート指定できなかった気がします)。 -
  • 以下は環境によりますので、「私だったら」というやり方ですが、10022でWebサーバーを立てておいて、別の接続元(ISP)でもだめか確認したり、さくら以外のVPS/レンタルサーバーからCGIかcronつかってVPSにwgetしてみますね。これでつながる経路があればさくらの制限ではないと言えますので、自分側のネットワークの問題と切り分けられます。 -
  • 回答にも追記しました。 -
  • 今日もう一度試してみるとハイポートでも接続ができるようになっていました。一時的にどこかネットワークの調子が悪かったのか、自分では気づかないミスをしてたのかはわかりません…。しかし色々と対処法を教えていただき大変勉強になりました。いつも回答ありがとうございます。 -
  • いえいえ、原因がわからなかいのは少し残念ですが、接続できるようになってよかったです。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。