March 3, 2020

SSH接続で環境変数を引き継ぎたい

概要

訳あってSSHサーバーでterraformを実行したいけど、クレデンシャル情報を保存したくない。 毎度クレデンシャル情報を入力するのは面倒。 ローカルPCの環境変数にセットしたクレデンシャル情報をSSHサーバーでも使いたい、そんな時はSendEnvで送り込む。

SSHサーバー側

/etc/ssh/sshd_config のAcceptEnvに、SSHクライアントから送り込んでもいい環境変数をスペース区切りで列挙する。

AcceptEnv AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

sshdをリロード

sudo systemctl reload sshd

SSHクライアント側

OpenSSH

~/.ssh/config のSendEnvに送り込みたい環境変数をスペース区切りで列挙する。

Host *
  SendEnv  AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

環境変数をセットして

export AWS_ACCESS_KEY_ID="hogehoge"
export AWS_SECRET_ACCESS_KEY="fugafuga"

ssh接続して確認

ssh ssh-server
env | grep AWS

PuTTY

Windows10はOS標準でOpenSSHがインストールされているが、PuTTYでもSendEnvできる。

  • Connection
    • Data
      • Environment variables
        VariableとValueを入力してAddしておけばSendEnvに書くのと同じ動作をする。

© 2020 nissy-lab.com