やろうとしていること
LAN内CentOS7を踏み台にしてWeb上のmysqlへSSHポート転送でアクセス
以下、次のように表現します。
server.local・・・社内に設置されているLinuxサーバー(CentOS7)
server.mysql・・・レンタルサーバー会社から借りているVPSサーバー(CentOS7)
PC・・・ODBC経由でServer.mysqlからデータを取得したいWindowsPC
(社内LAN) (internet)
PC----------router-----------server.mysql
server.local--+
mysqlを動かしているserver.mysqlは社内LANからしかアクセスできないようIPアドレスを制限したうえで22番(sshd)以外は塞いでいます。
またsshでのログインは鍵認証にしおり、接続ポートは10022に変更して運用しています。
この環境で上図のPCからserver.mysqlへのアクセスをするために、LAN内のserver.local上でsshのポート転送を利用し
PCからはserver.mysqlにアクセスをしたい、つまり踏み台にしてmysqlと通信したいと思っています。
SSHトンネル接続に対応したDBToolなどでは社内LANからserver.localへの接続が可能ですが、
今回はExcelからODBC経由でserver.mysqlからのデータ取得をするためにserver.localを踏み台サーバーにしようとしています。
※PC上でPuTTYなどを動かしポート転送する場合は接続可能ですが、今回は複数の社内PCからのアクセスを想定しているため
server.localを踏み台として利用することにしました
LAN内のserver.localで実行したコマンドは以下の通りです
$ ssh -p 10022 -f -N -L 20022:localhost:3306 -i ~/.key/{server.mysql.sshkeyfile} {server.mysql.ssh_user}@{server.mysql.host_domain}
コマンドはエラーなく実行できますが、mysqlとは通信ができません。
server.localで以下を実行
$ mysql -u {server.mysql.mysql_user} -p -h localhost -P 20022 Enter password: {mysql_userに対応したパスワードを入力} ERROR 1045 (28000): Access denied for user {server.mysql.mysql_user}@'localhost' (using password: YES)
となります。
ユーザーパスワードの入力に誤りはありません(クリップボード経由で張り付けています)
server.localのfirewalldについては20022を開放しています。
# firewall-cmd --zone=public --add-port=20022/tcp --permanent success # firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp3s0 sources: {以下省略} ports: ****/tcp ****/tcp ****/tcp ****/tcp ****/tcp 20022/tcp {以下省略}
もちろんPCからのODBC経由でもアクセスできません。
原因として考えられることなどご教示いただけると助かります。よろしくお願いいたします。
追記します
server.local上からlsofすると上述したssh -Lのコマンドは通信を確立しているのを確認しています。
$ lsof -i | grep 10022 ssh 13193 user 3u IPv4 729110603 0t0 TCP {server.local.host_name}:53726->{server.mysql.host_name}:10022 (ESTABLISHED)
回答1件
あなたの回答
tips
プレビュー