Bash:控制SSH

Den*_*man 8 ssh bash controls

我有这个bash文件,它要求OpenSSH到设备的IP,密码等.

现在,如果我使用ssh root@ip,我必须输入密码.这真的很烦人.其次; 我不能让我的脚本发送命令.

这就是我想要的 - >

  1. 不是密码的东西; 我已经找到了一些东西 但它告诉我找不到命令?:

    #!/usr/bin/expect -f

    spawn ssh root@$IPADDR

    expect "password:"

    sleep 1

    send "$rpass\r"

    1. 我希望用户能够看到一些可以选择的菜单; 之后; 每个命令都是为他完成的.就像一个新窗口,或类似的东西?

    2. 我不想使用: - 任何外部的东西 - 没有额外编辑SSH连接

BASH INFO:GNU Bash,v.4.0.33(1)-release(i486-pc-linux-gnu),在Linux Mint上运行.但它必须可用于几个Linux发行版,还可以在Mac上使用?

Che*_*hev 15

不使用ssh在明文中存储密码的正确方法是使用ssh.第一次运行:

SSH-凯基

这将生成一个新的SSH密钥~/.ssh/id_rsa.pub.之后只需运行:

ssh-copy-id user@my.server.com

如果您使用的是OS X或其他没有"ssh-copy-id"的计算机,则可以使用以下一行代替:

cat~/.ssh/id_rsa.pub | ssh user @ machine"mkdir~/.ssh; cat >>〜/ .ssh/authorized_keys"

最终,您只需将~/.ssh/id_rsa.pub本地计算机~/.ssh/authorized_keys上的内容附加到远程服务器上即可.你如何做到这一点取决于你,以上只是快速捷径.


bma*_*ies 3

许多工具会竭尽全力阻止您正在做的事情。我建议使用 ssh 公钥而不是密码来解决这个问题。

最好的选择是基于开源编写自己修改的 ssh 客户端,以便控制密码管理。

哦,好吧,我忘了。您可能可以使用 pty 来智取它,因为那时 /dev/tty 将由您控制。expect可能会帮助你。