Busybox端末でSSHパスワードを自動入力

Busybox端末でSSHパスワードを自動入力

私は現在bashスクリプトを使ってsshを介してモデムを再起動しようとしています。説明しない理由で、Ubuntuサーバーシステムから起動し、busybox 1.21.1を実行する設定でsshを接続し、そこからモデムにsshを接続して再起動する必要があります。

モデムにSSHで接続するときにパスワードを自動的に入力するには、ビジボックスシステムが必要です。

UbuntuサーバーからビジボックスシステムにSSH経由で接続するときにこれを行うには、sshpass次のコマンドを使用します。

sshpass -p password ssh [email protected] 'ssh [email protected]'

このコマンドを実行すると、モデムのパスワードプロンプトが表示されます。

sshpass私の問題は、busyboxシステムで利用可能なコマンドがいくつかあり、それらのどれもまたはexpectsshパスワードプロンプトと自動的に対話する唯一の2つのコマンドではないことです。

busyboxのインストールで定義されている機能は次のとおりです。

[, [[, addgroup, adduser, ar, arping, ash, awk, basename, blkid, bunzip2, bzcat,
cat, catv, chattr, chgrp, chmod, chown, chroot, chrt, chvt, cksum, clear, cmp,  
cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devmem, 
df, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, echo,
egrep, eject, env, ether-wake, expr, false, fdflush, fdformat, fgrep, find, fold,
free, freeramdisk, fsck, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm,
head, hexdump, hostid, hostname, hwclock, id, ifconfig, ifdown, ifup, inetd, init, 
insmod, install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill, 
killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont, 
loadkmap, logger, login, logname, losetup, ls, lsattr, lsmod, lsof, lspci, lsusb, 
lzcat, lzma, makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo, mknod, mkswap,
mktemp, modprobe, more, mount, mountpoint, mt, mv, nameif, netstat, nice, nohup,
nslookup, od, openvt, passwd, patch, pidof, ping, pipe_progress, pivot_root, 
poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath,
reboot, renice, reset, resize, rm, rmdir, rmmod, route, run-parts, runlevel, sed, 
seq, setarch, setconsole, setkeycodes, setlogcons, setserial, setsid, sh, sha1sum, 
sha256sum, sha3sum, sha512sum, sleep, sort, start-stop-daemon, strings, stty, su,
sulogin, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, 
telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, umount, 
uname, uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, 
xzcat, yes, zcat

ビジボックスシステムからモデムにSSH接続するときに、このパスワードを自動的に入力するために何を使用できるかを知っていますか?

どんな助けやアイデアにも感謝します。

編集:モデムのサポートがないため、SSHキー認証はできません。

Edit2:私が尋ねる質問が妥当であるか、誰かが少なくともコメントを付けて教えてもらえますか?誰かが私を助けることができる方法を知るために、私の問題を明確に説明しようとします。私の質問に混乱している部分がある場合、または詳細についてお知らせできる場合はお知らせください。

答え1

Ubuntuサーバーに必要なものは次のとおりですexpect(またはPerlExpect.pmモジュールなどの同様のモジュール、PerlNet::SSHモジュール...またはPythonを好む場合はPythonモジュール)。pexpect

  • パスワードまたはキーを使用してビジボックスシステムに接続する
  • シェルプロンプトが表示されたら、sshコマンドを実行してモデムにアクセスします。
  • パスワードプロンプトが表示されたら、パスワードを送信してください。
  • モデムに必要なコマンドを実行してください。
  • モデムをシャットダウンした後、ビジボックスサーバーをシャットダウンします。

答え2

中間のBusyBoxシステムに認証するためのキーがあり、エンドシステムのパスワードが必要な場合は、元のsshpassUbuntuシステムを呼び出してBusyBoxシステムを呼び出すと、内部コマンド用のssh -t端末があります。sshパスワードをお読みください。

sshpass -p modempassword ssh -t [email protected] ssh [email protected]

BusyBoxシステムを使用するためのパスワードも必要な場合は、パスワードを2回ダイヤルする必要がありますsshpass

sshpass -p busyboxpassword sshpass -p modempassword ssh -t [email protected] ssh [email protected]

何らかの理由で接続を確立できない場合は、次の2つの手順で設定できます。

  1. 開く主な接続BusyBoxシステムに。これにはクライアント側のサポートのみが必要であり、サーバー側には特別なものはありません。

    sshpass -p busyboxpassword ssh -o ControlMaster=auto -f [email protected] sleep 999999999
    
  2. BusyBoxシステムへのスレーブ接続を使用してモデムへの接続を開きます。

    sshpass -p modempassword ssh -o ControlMaster=auto -t [email protected] ssh [email protected]
    
  3. 完了したら、次のコマンドを使用してデフォルト接続を閉じます。

    ssh -O exit [email protected]
    

関連情報