LoginSignup
24

More than 1 year has passed since last update.

SCPで踏み台の向こうにあるホストへ多段接続してファイルを一発で送る方法

Last updated at Posted at 2020-04-03
  • 環境
    • 接続元
      • CentOS Linux release 7.6.1810 (Core)
      • OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
    • 踏み台ホスト : Amazon Linux release 2 (Karoo)
    • 置き場ホスト : Red Hat Enterprise Linux Server release 5.11 (Tikanga)

やりたいこと : 踏み台の向こうにある置き場ホストに一発でファイルを転送したい

ファイルを接続元から踏み台において、踏み台から置き場において・・・というのが面倒くさい。
2020-04-03 17.18.36.jpg

SCPでProxyCommandを使って多段接続すればいい

フォーマット
# 例)特定ディレクトリにある拡張子jarのファイルを全部転送する
# -r : ディレクトリ内を再帰的にコピーします。
# -o : 設定ファイル(ssh_config)で使われている形式のオプションを ssh に渡す
# -W : %hと%pを本来の接続先とそのポートへ置換する
$ scp -i {置き場鍵} -r -o ProxyCommand='ssh -i {踏み台鍵} -W %h:%p {踏み台ユーザ}@{踏み台アドレス}' {自分ディレクトリパス}/*.jar {置き場ユーザ}@{置き場アドレス}:{置き場ディレクトリパス}

やってみた

SSHでも同じようにProxyCommandを使って多段接続すれば、踏み台の向こうにあるホストへ一発でログインできる。

# SCPでファイルを転送する
$ scp -i ~/.ssh/okiba.pem -r -o ProxyCommand='ssh -i ~/.ssh/fumidai.pem ponsuke@12.134.567.890 -W %h:%p' /home/ponsuke/HOGE.war ponsuke@10.0.2.1:/tmp/.
Enter passphrase for key '/home/ponsuke/.ssh/fumidai.pem':
Enter passphrase for key '/home/ponsuke/.ssh/okiba.pem':
HOGE.war                                                                                                                   100%   38MB  44.2MB/s   00:00
Killed by signal 1.

# SSH接続しておいたファイルを確認しに行ってみる
$ ssh -i ~/.ssh/okiba.pem -r -o ProxyCommand='ssh -i ~/.ssh/fumidai.pem ponsuke@12.134.567.890 -W %h:%p' ponsuke@10.0.2.1
Enter passphrase for key '/home/ponsuke/.ssh/fumidai.pem':
Enter passphrase for key '/home/ponsuke/.ssh/okiba.pem':
Last login: Thu Apr  2 14:49:44 2020 from 10.0.3.182
# ちゃんと送られていた
$ ls /tmp/
HOGE.war

.ssh/configに書いて楽をする方法

「踏み台の向こうにある置き場ホストに一発でファイルを転送」をコマンドで書くと異様に長いし覚えられないので~/.ssh/configに設定を書くと楽になりました。

# 踏み台
Host fumidai
    HostName 12.134.567.890
    User ponsuke
    IdentityFile ~/.ssh/fumidai.pem

# 置き場
Host okiba
    HostName 10.0.2.1
    User ponsuke
    IdentityFile ~/.ssh/okiba.pem
    ProxyCommand ssh fumidai -W %h:%p

上記にのように~/.ssh/configを書くと簡単に多段階接続してSCPできます。

# configに設定を書いた場合
$ scp -r {自分ディレクトリパス}/*.jar okiba:{置き場ディレクトリパス}

# configに設定を書かない場合
$ scp -i {置き場鍵} -r -o ProxyCommand='ssh -i {踏み台鍵} -W %h:%p {踏み台ユーザ}@{踏み台アドレス}' {自分ディレクトリパス}/*.jar {置き場ユーザ}@{置き場アドレス}:{置き場ディレクトリパス}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24