こんにちは!wataruです。現場で作業をしていて、作業環境のLinuxサーバーのリモートサーバーからローカルのPCにファイルを持ってきたいということはありますよね。
単純にリモートサーバにアクセスしてFTPツールやSCPツールなどで持ってくれば良いのですが、踏み台サーバが経由されていると話は別です。
踏み台経由のリモートからscpでファイルをローカルに持ってくる方法
まずは踏み台サーバに対象ファイルを持ってくる必要がある
必要なファイルがあるリモートサーバが踏み台サーバを経由している場合は、リモート→ローカルで直接ファイルを持ってくることはできません。
一度、踏み台サーバにリモートからファイルを転送してくる必要があります!
1.リモートから踏み台サーバにファイルを転送
2.踏み台サーバからローカルに転送
2は、FTPやSCPのツールを使うのが良いと思います。
私はWinSCPでやりました。
winscp.net
※最近はセキュリティの観点でWinSCPを禁止している現場もあると思います。
テラタームを利用されていれば、【ファイル】タブのSSH SCPタブを選択→From,Toで転送元、転送先ディレクトリを指定→で踏み台にファイルを転送出来ます。
私も最近WinSCPが禁止になってしまったので、踏み台サーバへの転送のやり方を変えました。
テラタームならドラッグアンドドロップで転送ができます。
リモートから踏み台へ転送するのには?
リモートから踏み台サーバへ転送する場合は、SCPコマンドを使うのが良いです。
SCPコマンドは通信はsshを使用して認証するデータ転送のコマンドです。
例:リモートから踏み台サーバへファイルを転送する場合のコマンド
scp [ユーザ名]@[ホスト名]:ディレクトリ/ファイル名 ./
コマンド実行例
scp dev-user@dev-1fst:/home/devuser/XXXX.tar.gz ./
※踏み台サーバーで実施
scp dev-user@dev-1fst:/root/XXXX.tar.gz ./
※踏み台サーバーで実施
踏み台に転送ができたらあとはツールなどでローカルに持ってくる
踏み台に転送ができればあとはツールとかでローカルに持って来ましょう!
踏み台サーバからリモートに転送する場合
scp /XXXX/XXXX/ファイル名 [ユーザ名]@[ホスト名]:/ディレクトリ/
コマンド記述例
scp /home/xxxx.xxxx/scp_file.tar.gz dev-user@dev-1st:/tmp/
※踏み台の/home/xxxx.xxxx/scp_file.tar.gzをリモートの[dev-1st]サーバーの/tmp/ディレクトリに転送
踏み台サーバからリモートにファイルを転送する場合は、ローカルに持ってくる時と逆です。
踏み台サーバのファイル名を指定し転送するリモートに[ユーザ名]@[ホスト名]:/ディレクトリ/ のように指定してコマンドを叩きます。
事前に踏み台サーバにファイルを配置しておきましょう。
さいごに
最後まで読んでいただき、ありがとうございました。
最近は踏み台サーバ経由で開発環境にアクセスすることが多いと思いますので、この手順は知っておいて損は無いと思います!
もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦