
注:これは、この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
ローカルホストから実行されます。