🐕

GitBashを用いて踏み台サーバを2台経由してSSH接続やSCPでのファイル転送を実施する方法

2023/06/13に公開

はじめに

業務でGitBashを用いて踏み台サーバを2台経由してSSH接続やSCPを用いたファイル転送を実施する機会があったので、対応方法を記事として残したいと思います。

イメージ図

環境

  • OSは、CentOS7.9を使用
OSバージョン
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$
  • ターミナルは、GitBashを使用する。

設定手順

  • GitBashのユーザーディレクトリ上にsshディレクトリを作成し、configファイルを作成する。
コマンド
mkdir ~/.ssh
touch ~/.ssh/config
  • configファイルに以下の設定を記載し、保存する。
configファイル
## bastion1
Host bastion1
    Hostname 192.168.2.98
    User bastion
    Port 22

## bastion2
Host bastion2
    Hostname 172.21.48.99
    User bastion
    Port 22
    ProxyCommand ssh -W %h:%p bastion1

## Target
Host Target
    Hostname 172.21.48.100
    User target
    Port 22
    ProxyCommand ssh -W %h:%p bastion2

接続確認

SSH接続

以下のコマンドを実行し、SSH接続を行う。

コマンド
ssh Target

それぞれのサーバのパスワードが聞かれるので、入力するとログイン可能。

実行例
$ ssh Target
bastion@192.168.2.98's password:
bastion@172.21.48.99's password:
target@172.21.48.100's password:
Last login: Tue Jun 13 21:19:30 2023 from 172.21.49.52
[target@Target ~]$

SCPでのファイル転送

以下のようにSCPコマンドを実行すると、一発でTargetサーバにファイル転送が可能です。

コマンド
scp {送りたいファイルパス} {Targetサーバ名}:{配置したいディレクトリパス}

イメージとしては、以下のような形になります。

実行例
$ scp test jenkins:~/.
bastion@192.168.2.98's password:
bastion@172.21.48.99's password:
jenkins@172.21.48.100's password:
test                                          100%   10     0.1KB/s   00:00

さいごに

WinSCP等を用いてファイル転送を実施する方法も検討しましたが、こちらの方法が一番簡単でした。

参考

https://tech-blog.rakus.co.jp/entry/20210512/ssh

https://qiita.com/arie0703/items/b8347661de10c6e5d37b

Discussion