質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

1303閲覧

CentOSへのSSH接続に失敗します。

auchan

総合スコア4

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2021/10/23 04:11

編集2021/10/23 05:18

前提・実現したいこと

<目的>
レンタルサーバー(お名前.com VPSプラン CentOS7.6)にインストールしたMySQLを操作したい。
<方法>
自動でMySQLに書き込めるようにしたいのでPythonにてMySQLにアクセスしようと考えています。
レンタルサーバーのセキュリティ上、rootユーザーにはパスワードはなく、秘密鍵にてログインを行うことになっています。

<参考ページ>
https://qiita.com/seisyu1985/items/e910d85b2ca6f30db4f2

発生している問題・エラーメッセージ

例外が発生しました: InternalError (note: full exception trace is shown but execution is paused at: <module>)
Packet sequence number wrong - got 45 expected 0
File "***.py", line 25, in <module> (Current frame)
conn = pymysql.connect( host="127.0.0.1",

from paramiko import ssh_exception from sshtunnel import SSHTunnelForwarder import pymysql.cursors import paramiko try: # SSH関連の設定 with SSHTunnelForwarder( ("****", 10022), ssh_host_key=None, ssh_private_key= "****.pem", ssh_username="root", ssh_password=None, remote_bind_address=("****", 10022), local_bind_address=("127.0.0.1", 80) ) as server: server.start() conn = pymysql.connect( host="127.0.0.1", port= server.local_bind_port, user='****', password='****', database='****', cursorclass = pymysql.cursors.DictCursor) conn.ping(reconnect=True) # select # SQLを実行する cursor = conn.cursor() sql = "show tables" cursor.execute(sql) # Select結果を取り出す rets = cursor.fetchall() for r in rets: print(r) # MySQLから切断する conn.close() server.end() except : import traceback traceback.print_exc()

ssh接続プログラム実行直後のサーバー側ログ

-- A session with the ID 256 has been terminated.
10月 23 14:12:05 ***.myvps.jp sshd[976]: Invalid user sge from *** port ***8
10月 23 14:12:05 ***.myvps.jp sshd[976]: input_userauth_request: invalid user sge [preauth]
10月 23 14:12:06 ***.myvps.jp sshd[976]: pam_unix(sshd:auth): check pass; user unknown
10月 23 14:12:06 ***.myvps.jp sshd[976]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=
10月 23 14:12:08 ***.myvps.jp sshd[976]: Failed password for invalid user sge from *** port ***8 ssh2
10月 23 14:12:08 ***.myvps.jp sshd[976]: Connection closed by *** port *** [preauth]
10月 23 14:13:23 ***.myvps.jp sshd[978]: Invalid user sge from *** port ***2
10月 23 14:13:23 ***.myvps.jp sshd[978]: input_userauth_request: invalid user sge [preauth]
10月 23 14:13:23 ***.myvps.jp sshd[978]: pam_unix(sshd:auth): check pass; user unknown
10月 23 14:13:23 ***.myvps.jp sshd[978]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser=
10月 23 14:13:25 ***.myvps.jp sshd[978]: Failed password for invalid user sge from *** port ***2 ssh2
10月 23 14:13:25 ***.myvps.jp sshd[978]: Connection closed by *** port ***2 [preauth]

試したこと

・FWをきってみる
・サーバー再起動
・秘密鍵再取得
・TeraTermからのSSH接続(成功)

補足情報(FW/ツールのバージョンなど)

OS:CentOS 7.6
Python:3.9.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

angel_p_57

2021/10/23 04:27

> Pythonを用いてSSH接続を行おうとしました その詳細がないと回答しようがないと思います。 ひょっとしたら、「コード中の "with SSHTunnelForwarder" のパラメータで判断できるでしょ」ということかも知れませんが、それがちゃんと状況に沿ったものかどうか、判断する材料がありませんよね。
meg_

2021/10/23 05:03

サーバーのログには何か残っていますか?
auchan

2021/10/23 05:07

> angel_p_57 様 大変失礼いたしました。 状況説明を追記しましたが、 angel_p_57様が意図されている説明でなければご教示ください。 >meg_様 確認いたします。後ほど追記させていただきます。
angel_p_57

2021/10/23 05:38

> angel_p_57様が意図されている説明でなければご教示ください。 各パラメータを何に基づいて決定しているのか、もっと言うと、各パラメータとしてどのような意味の値なのか ( サーバ等で設定しているどのパラメータと対応するのか ) を把握してますか? ということです。 例えば 10022 という値だけ出されて、それが正しいかどうか、外野が判断できるわけないんですよ。 …ただ、今回の場合 remote_bind_address=("****", 10022) だけ直せば済むような気もしますけど。ただの勘ですが。これ、mysql のサービス受け付けアドレス・ポートにするところで "localhost", 3306 とかじゃないですかね。あと、local_bind_address は設定多分不要で、設定するにしても 80 はやめた方がいいでしょう。
auchan

2021/10/23 06:04

remote_bind_address=("****", 10022) おっしゃるとおり、localhostにすることで接続することができました。 もっと根深い問題だと勝手に思い込んでしまい時間を浪費しました... パラメータの意味について「こうだろう」と安易な解釈をしてしまい、今回の事態になりました。 あまり後世の方々に利益になりえるような質問にならず、申し訳ないです。 ポイントのためにもangel_p_57様をベストアンサーとさせていただきたいと思うのですが、いかがでしょうか。
angel_p_57

2021/10/23 06:16

なにか回答がないとクローズできないんでしたっけ。 では、先ほどのコメントを少し書き直して回答にします。
guest

回答1

0

ベストアンサー

今回の場合 remote_bind_address=("****", 10022) がパラメータとして合っていないように思います。
ここはトンネル先で接続する、今回であれば mysql のサービス受け付けアドレス・ポートにするところとなるためです。
mysql ということであれば、デフォルトポート3306なので、 "localhost", 3306 の組み合わせの可能性が高いと思います。
あと、local_bind_address は、トンネルの接続元でバインドするポートですが、設定しなくても自動で割り当ててくれるためおそらく不要です。また、設定するにしても 80 とすると HTTP サービス用の well-known ポートなので避けて、適度に大きなポート番号を設定した方がいいでしょう。

投稿2021/10/23 06:17

angel_p_57

総合スコア1681

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

auchan

2021/10/23 06:30

拙い説明にも関わらず、問題を推測して回答していただきありがとうございます。 ポート番号の配慮についても勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問