多段SSHのやり方を解説【WEB開発】

Programming

こんにちは。かじです。

踏み台サーバーとは

通常、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:[遠隔サーバーの転送先パス] [ローカルのファイルパス] 

今回は以上になります。

ありがとうございました。

タイトルとURLをコピーしました