sshpass を使用して 2 番目の SSH ホップでパスワードを入力する方法

sshpass を使用して 2 番目の SSH ホップでパスワードを入力する方法

注:これは、このSOの質問関連はありますが、同一ではありません (さらに、別の StackExchange サイトにあります)。その質問では、著者は遠隔システムでコマンドを実行する方法を尋ねています。この質問では、2 つの SSH 接続を介してシェルを開く (および維持する) 方法を尋ねています。

に到達するには、中間マシン ( と呼ぶことにします$gateway)を経由する必要があります$server。したがって、私の典型的なワークフローは次のようになります。

ssh $gateway (supply password manually)
ssh $server (supply password manually)

へのホップでは SSH 公開キー認証を設定できます$gatewayが、 への 2 番目のホップでは設定できません$server。そのため、私ができる最善の対応は次のとおりです。

ssh $gateway (no password necessary)
ssh $server (supply password manually)

私の質問は、2 番目のホップでパスワードを入力するために、 または他の方法を使用することはできますか? マシンに他のソフトウェアsshpassをインストールする権限がありません。sshpass$gateway

答え1

手動パスワード入力を無視するように試みることができます -

vipin@kali:~$ cat kk.sh
#!/usr/bin/expect 
    set password 1               #set password to 1 (hardcoded)
    spawn ssh kali@kali          # user and hostname is kali
    expect "password"
    send "$password\r"
    interact                     # to get the shell prompt
vipin@kali:~$ ./kk.sh            # execute it and you are in new server

答え2

使用ProxyCommand

sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server

sshpassローカルホストから実行されます。

関連情報