私の一般的なプロセスは次のとおりです。
ssh jumphost
sudo -iHu jump_user
ssh target_user@targethost
Do some task
ProxyCommandを使用してこれを行うにはどうすればよいですか?私は試した:
ssh target_user@target_host -o ProxyCommand="ssh jumphost 'sudo -iHu jump_user' nc -w 120 %h %p"
target_user
ただし、ユーザーがjump_user
onに変更されていないため、パスワードを求められますjump_host
。どうすればいいですか?私の究極の目標は、これを使用してターゲットansible_ssh_common_args
サーバーでタスクを実行できるようにすることです。
答え1
私には次のものが必要なようです。
ssh -t jumphost 'exec sudo -iHu jump_user exec ssh target_user@targethost'
ProxyCommand
これはネットワーク接続のみを提供しますが、ユーザーを開く必要がある場合はアクセスする必要がある秘密鍵をjumphost
表します。その場合はそのユーザーとして実行するjump_user
必要があります。ssh
最善のことは、おそらくこれを避けて追加することです。あなたのauthorized_keys
自分のキーを使用するtarget_user@targethost
と、次のことができます。
ssh -j jump_host target_user@targethost
答え2
.ssh/config
ジャンプホストにファイルを作成します。
Host targethost
User target_user
それともあなたの設定に適したものであれば何でも可能です。 Keepalives、プロキシ配信、多重化などのその他の設定もここで構成し、生活をより簡単にすることができます。
man ssh_config
確認したい文書です。
答え3
Jumphostに接続するとき:ユーザーを変更しますssh jumpuser@jumphost
。これを行うには、Jumphostに公開鍵を登録して設定する必要があります~jumpuser/.ssh/authorized_keys
。
または
Jumpuserの秘密鍵をユーザーにコピーします。このキーがないことは、ユーザーがsshを実行できない唯一の理由です(リモコンがパスワードを求める唯一の理由)。