こんにちは。かじです。
踏み台サーバーとは
通常、SSHはセキュリティを担保するために秘密鍵と共通鍵を使用してリモートマシンに接続します。
しかし、このやり方だといくらか問題があります。
例えばわざわざインターネットから直接アクセスできないようにプライベートな環境にサーバーを構築したくとも、インターネットに接続されていないとSSH接続はできません。そういった時に使用するのが踏み台サーバーです。
WEBサーバーとインターネットの間に踏み台サーバーとなるサーバーを1台配置して、踏み台サーバーにSSH接続をして、さらに踏み台サーバーからWEBサーバーにSSH接続することで、WEBサーバーを直接インターネットに出すことなくSSHをすることができます。
多段SSHとは
踏み台サーバーを使用したSSH接続をする際に、プライベートネットワークにあるサーバーにSSH接続をするための秘密鍵を踏み台サーバーに配置していた場合、踏み台サーバーを乗っ取られると、プライベートなサーバーにアクセスされてしまいます。
その際に使用するのが多段SSHになります。
多段SSHは接続する元となるデバイスに踏み台サーバーへの秘密鍵、SSH接続したいサーバーの秘密鍵を配置して、接続元デバイスから踏み台を通してサーバーへ一気にSSH接続することができます。
多段SSHのやり方
まずは~/.ssh/configに下記を追記します。
# ログインするサーバ毎にHostを記載
# Hostの名前は任意で設定可能
Host bastion
# 踏み台サーバのパブリックIP(DNS名でも指定可能)
HostName xxx.xxx.xxx.xxx
# sshポート番号(省略可能)
Port 22
# ログインするユーザ名
User ec2-user
# ローカル端末に保存した、踏み台サーバの秘密鍵のパス指定
IdentityFile ~/path/bastion.pem
Host private
# プライベートサーバのプライベートIP(DNS名でも指定可能)
HostName xxx.xxx.xxx.xxx
# sshポート番号(省略可能)
Port 22
# ログインするユーザ名
User ec2-user
# 踏み台サーバを経由してログイン
ProxyCommand ssh bastion -W %h:%p
# ローカル端末に保存した、プライベートサーバの秘密鍵のパス指定
IdentityFile ~/path/private.pem
.ssh/configのパスは、
Windowsの場合はC:/users/[ユーザー名]/.ssh/config、
Macの場合は下記を参考にしてください。
Mac SSH 設定 - Qiita
ssh コマンドとは$ ssh ホスト名 SSH(Secure Shell)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルです。SSHの設…
configファイルへの追記が完了したら下記のコマンドを実行します。
$ ssh private
ファイルを転送したい場合
SCPコマンドの場合は下記になります。
遠隔サーバーにファイルを転送する場合
scp [ローカルのファイルパス] private:[遠隔サーバーの転送先パス]
遠隔サーバーからファイルを転送する場合
scp private:[遠隔サーバーの転送先パス] [ローカルのファイルパス]
今回は以上になります。
ありがとうございました。