状況
本番のDBサーバーから必要データをcsvファイルに抽出後、ローカルにファイルを持ってくるのに詰まりました。
(mysqlにてデータをcsvに抽出する方法は参考記事にて記載。)
【サーバー構成】
◆本番DBサーバー (CSVファイルはここにあります)
↑ SSH
◆踏み台サーバー
↑ SSH
◆ローカル (ここまで移動させたい)
今回は
- 本番DBから踏み台サーバー
- 踏み台サーバーからローカルサーバー
の2ステップで移動させています。
エラー内容など
下記のコマンドを本番DBサーバーにて行っていたのですが、
ひたすらpermission denied(puclickey)で弾かれていました。
// ssh ユーザー名@ホスト名:ファイルパス(移動元) ユーザー名@ホスト名:ファイルパス(移動先)
ssh ec2-user@xx.xxx.xxxxxx:/tmp/hogehoge.csv ec2-user@xx.xxx.xxx.xxx:/tmp/
Permission denied (publickey).
試したこと
・該当ファイルおよびディレクトリーのpermissionやユーザー設定変更
→効果はいまひとつのようだ...
解決策
https://qiita.com/shuuhei/items/e435762017c11f71d07d
上記の記事を読んで、scpコマンドの実行場所がおかしかったことが判明
// 移動先のサーバー(今回だと踏み台サーバー)にて実行
// scp 本番サーバーの情報:ファイルパス 移動先のディレクトリパス(/がないとうまく通らない)
scp ec2-user@xx.xxx.xxxxxx:/tmp/hogehoge.csv /tmp/
本筋ではないが詰まったところ
・サーバーの情報は~/.sshのconfigにて短縮名を設定している場合、短縮名を使うと成功した
(今回だとローカルサーバー)
【例】
scp サーバーの短縮名:ファイルパス 移動先のディレクトリパス
・ec2で、プライベートIPでの接続が指定されている場合、ホスト名はプライベートIPを使用する(今回だと本番DBサーバーがそうでした)
【例】
scp ec2-user@ip-xx-x-x-xx:/hogeohoge.csv /tmp/
移動一つに結構時間がかかってしまったので、もっとスマートにしたいものですね。