乐趣区

关于linux:linux之sshpass命令

将文件连贯并传输到近程零碎是系统管理员始终在做的事件。SSH 是 Linux 平台上许多系统管理员应用的根本工具。SSH 反对两种身份验证模式:

  • 1. 明码认证
  • 2. 公钥认证

公钥认证被认为是这两种办法中最平安的模式,只管明码认证是最风行和最容易的。然而,应用明码验证时,总是要求用户输出明码。这种反复是乏味的。此外,SSH 在外壳程序脚本中应用时也须要手动干涉。如果在应用 SSH 明码身份验证时须要自动化,那么一个简略的工具 sshpass 必不可少。

什么是 sshpass

sshpass 实用程序旨在应用键盘交互明码身份验证模式运行 SSH,但以非交互方式运行。

SSH 应用间接 TTY 拜访来确保明码的确是由交互式键盘用户收回的。sshpass在专用的 TTY 中运行 SSH,让 SSH 认为它是从交互式用户那里获取明码的。

装置 sshpass

您能够 sshpass 应用以下简略命令进行装置:

> yum install sshpass -y

应用 sshpass

sshpass 选项之后指定要运行的命令。通常,该命令 ssh 带有参数,但也能够是任何其余命令。不过,目前 SSH 明码提醒已硬编码为sshpass

sshpass [-f filename | -d num | -p password | -e] [options]

命令选项

-p 明码 明码在命令行中给出。-f 文件名 明码是文件名的第一行。-d number number 是 sshpass 从运行程序继承的文件描述符。从关上的文件描述符中读取明码。-e 明码来自环境变量 "SSHPASS"。

用于 sshpass 通过 SSH 登录到近程服务器。假如明码为4u2tryhack。以下是应用 sshpass 选项的几种办法。

应用-p(这是最不平安的抉择,不应应用):

> sshpass -p "4u2tryhack" ssh username@rumenz.com

-p在 shell 脚本中应用时,该选项如下所示:

> sshpass -p "4u2tryhack" ssh -o StrictHostKeyChecking=no username@rumenz.com

应用 -f 选项(明码应该是文件名的第一行):

> echo'4u2tryhack' > pass_file
> chmod 0400 pass_file
> sshpass -f pass_file ssh username@rumenz.com

-f 在 shell 脚本中应用以下选项:

> sshpass -f pass_file ssh -o StrictHostKeyChecking=no username@rumenz.com

应用 -e 选项(明码应该是文件名的第一行)

$ SSHPASS='4u2tryhack' sshpass -e ssh username@rumenz.com

-e在 shell 脚本中应用时,该选项如下所示:

> SSHPASS ='4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no username@rumenz.com

示例 2:Rsync

sshpass搭配应用rsync

> SSHPASS='4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /rumenz/ rumenz.com:/opt/rumenz/ 

下面应用了 -e 选项,该选项将明码传递给环境变量SSHPASS

咱们能够 -f 像这样应用开关:

> rsync --rsh="sshpass -f pass_file ssh -l username" /rumenz/ rumenz.com:/opt/rumenz/

示例 3:Scp

应用 sshpassscp:

> scp -r /var/www/html --rsh="sshpass -f pass_file ssh -l user" rumenz.com:/var/www/html

范例 4:GPG

您也能够应用 sshpassGPG 加密的文件。应用该-f 开关时,参考文件为纯文本格式。让咱们看看如何应用 GPG 加密文件并应用它。

首先,创立一个文件,如下所示:

>  echo '4u2tryhack'> .sshpasswd

接下来,应用以下 gpg 命令加密文件:

> gpg -c .sshpasswd

删除蕴含明文的文件:

> rm .sshpasswd

最初,如下应用它:

> gpg -d -q .sshpassword.gpg > pass_file; sshpass -f pass_file ssh root@rumenz.com

原文链接:https://rumenz.com/rumenbiji/…
微信公众号: 入门小站

退出移动版