ssh 的 shell 脚本

ssh 的 shell 脚本

谁能告诉我如何为 ssh 创建一个 shell 脚本,这样我就不必手动输入密码了?

我已经学习了 expect 命令,并且尝试了多个示例,但是没有用。有人能帮助我吗?

请尽快回复我。

答案1

如果由于某种原因您只需要依赖期望,请尝试类似以下操作(全部一行):

expect -c "spawn ssh <username>@a<address> <ssh commands/options> ; expect assword ; send $PASSWORD\n ; interact"

答案2

您可以使用ssh-keygenssh-copy-id创建 rsa 密钥并将您的密钥添加为远程计算机的允许主机。

创建 ssh 密钥:
$ ssh-keygen -t rsa

将其复制到远程计算机作为允许的主机:
$ ssh-copy-id user@<IP/hostname>
例如
$ ssh-copy-id [email protected]

答案3

您可以使用ssh 代理在整个会话期间仅提供一次密码,或者使用无需密码的密钥认证

就我个人而言,我强烈建议您不要使用这种在命令行上指定密码或将其存储在文本文件中的脚本。如果您的系统被入侵,您一定会后悔的。请记住,坏人首先会查看的是您的.bash_history

答案4

不要将密码放入 shell 脚本中。shell 脚本不是放置密码的地方。将密码放入 shell 脚本中是不可取的。不建议将密码放入 shell 脚本中。

如果上述建议不清楚,请重复几十次,直到清楚为止。

使用 SSH 时,最好的办法是使用ssh-keygen来创建公钥/私钥对。然后,在远程计算机上~/.ssh(或已设置 SSH 以查找其配置的任何位置)编辑该文件authorized_keys并粘贴您的民众键。之后,该文件将如下所示:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQ...elided for security...fdVEkAPINVd0=rsa-key-20100920

一旦完成,您就不需要密码即可登录。


编辑以添加

您需要放置您的私人的密钥文件放入您的本地~/.ssh目录并确保只有您可以读取它。


进一步编辑以添加

这个答案提到了ssh-copy-id可以替代我提到的所有手动编辑的实用程序。这很不错。改用它。

相关内容