または

または

私の一般的なプロセスは次のとおりです。

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_useronに変更されていないため、パスワードを求められます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を実行できない唯一の理由です(リモコンがパスワードを求める唯一の理由)。

関連情報