sshpass:一个很棒的免交互SSH登录工具

简介:

在大多数情况下,Linux 系统管理员使用 SSH 登录到程 Linux 服务器时,要么是通过密码,要么是无密码 SSH 登录或基于密钥的 SSH 身份验证。

如果你想自动在 SSH 登录提示符中提供密码和用户名怎么办?这时 sshpass 就可以帮到你了。

sshpass 是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证),这样就可以通过 cron 调度器执行自动化的 shell 脚本进行备份。

ssh 直接使用 TTY 访问,以确保密码是用户键盘输入的。 sshpass 在专门的 tty 中运行 ssh,以误导 ssh 相信它是从用户接收到的密码。

重要:使用 sshpass 是最不安全的,因为所有系统上的用户在命令行中通过简单的 “ps” 命令就可看到密码。因此,如果必要,比如说在生产环境,我强烈建议使用 SSH 无密码身份验证。

在 Linux 中安装 sshpass

在基于 RedHat/CentOS 的系统中,首先需要启用 EPEL 仓库并使用 yum 命令安装它。

 
 
  1. # yum install sshpass 
  2. # dnf install sshpass    [Fedora 22 及以上版本] 

在 Debian/Ubuntu 和它的衍生版中,你可以使用 apt-get 命令来安装。

 
 
  1. $ sudo apt-get install sshpass 

另外,你也可以从最新的源码安装 sshpass,首先下载源码并从 tar 文件中解压出内容:

 
 
  1. $ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz 
  2. $ tar -xvf sshpass.tar.gz 
  3. $ cd sshpass-1.06 
  4. $ ./configure 
  5. # sudo make install  

如何在 Linux 中使用 sshpass

sshpass 与 ssh 一起使用,使用下面的命令可以查看 sshpass 的使用选项的完整描述:

 
 
  1. $ sshpass -h 

下面为显示的 sshpass 帮助内容:

 
 
  1. Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters 
  2. -f filename   Take password to use from file 
  3. -d number     Use number as file descriptor for getting password 
  4. -p password   Provide password as argument (security unwise) 
  5. -e            Password is passed as env-var "SSHPASS" 
  6. With no parameters - password will be taken from stdin 
  7. -h            Show help (this screen) 
  8. -V            Print version information 
  9. At most one of -f, -d, -p or -e should be used 

正如我之前提到的,sshpass 在用于脚本时才更可靠及更有用,请看下面的示例命令。

使用用户名和密码登录到远程 Linux ssh 服务器(10.42.0.1),并检查文件系统磁盘使用情况,如图所示。

 
 
  1. $ sshpass -p 'my_pass_here' ssh aaronkilik@10.42.0.1 'df -h'  

重要提示:此处,在命令行中提供了密码,这是不安全的,不建议使用此选项。

sshpass  使用 SSH 远程登录 Linux

sshpass – 使用 SSH 远程登录 Linux

但是,为了防止在屏幕上显示密码,可以使用 -e 标志,并将密码作为 SSHPASS 环境变量的值输入,如下所示:

 
 
  1. $ export SSHPASS='my_pass_here' 
  2. $ echo $SSHPASS 
  3. $ sshpass -e ssh aaronkilik@10.42.0.1 'df -h'   

sshpass  在终端中隐藏密码

sshpass – 在终端中隐藏密码

注意:在上面的示例中,SSHPASS 环境变量仅用于临时目的,并将在重新启动后删除。

要永久设置 SSHPASS 环境变量,打开 /etc/profile 文件,并在文件开头输入 export 语句:

 
 
  1. export SSHPASS='my_pass_here' 

保存文件并退出,接着运行下面的命令使更改生效:

 
 
  1. $ source /etc/profile 

另外,也可以使用 -f 标志,并把密码放在一个文件中。 这样,您可以从文件中读取密码,如下所示:

 
 
  1. $ sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h'  

sshpass  在登录时提供密码文件

sshpass – 在登录时提供密码文件

你也可以使用 sshpass 通过 scp 传输文件或者 rsync 备份/同步文件,如下所示:

 
 
  1. ------- Transfer Files Using SCP -------  
  2. $ scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html 
  3. ------- Backup or Sync Files Using Rsync ------- 
  4. $ rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/ 

更多的用法,建议阅读 sshpass 的 man 页面,输入:

 
 
  1. $ man sshpass 

在本文中,我们解释了 sshpass 是一个非交互式密码验证的简单工具。 虽然这个工具可能是有帮助的,但还是强烈建议使用更安全的 ssh 公钥认证机制。

请在下面的评论栏写下任何问题或评论,以便可以进一步讨论。

作者简介:Aaron Kili 是一位 Linux 和 F.O.S.S 爱好者,未来的 Linux 系统管理员,web 开发人员, 还是 TecMint 原创作者,热爱电脑工作,并乐于分享知识。





作者:Aaron Kili
来源:51CTO
目录
相关文章
|
2月前
|
Shell 网络安全 iOS开发
最好用的SSH工具Royal TSX for mac使用教程
众所周知,在 Windows上我们经常用到的shell工具可能非 xshell莫属了。但是xshell却并没有开发mac 版本,我们只能用其他的工具替代了。 在我用过几个ssh工具之后,我觉得在macOS上最好用的ssh工具客户端必须是 Royal TSX,它和使用xhell的感觉简直一模一样。 Royal TSX是一款功能非常强大适用于 Mac 的远程连接管理工具。兼容多种连接类型,比如:RDP、VNC、基于SSH连接的终端,SFTP/FTP/SCP或基于Web的连接管理,Royal TSX 都可以满足您的要求!
185 0
最好用的SSH工具Royal TSX for mac使用教程
|
5天前
|
存储 网络协议 Linux
如何使用内网穿透工具实现远程SSH访问Deepin系统
如何使用内网穿透工具实现远程SSH访问Deepin系统
|
1月前
|
安全 网络安全 数据安全/隐私保护
Termius 一款优秀的跨平台 SSH 客户端工具
Termius 一款优秀的跨平台 SSH 客户端工具
|
2月前
|
安全 网络协议 Linux
|
2月前
|
Ubuntu Linux 网络安全
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
MobaXterm的是有用方法---集串口,SSH远程登录和FTP传输三合一工具
67 3
|
2月前
|
关系型数据库 网络安全 数据库
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
73 6
|
2月前
|
网络安全 数据安全/隐私保护
如何使用ssh key免密码登录服务器?
如何使用ssh key免密码登录服务器?
|
3月前
|
安全 Linux Shell
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
93 0
|
Web App开发 安全 Linux
SSH工具客户端软件大全
SSH工具哪个好用?SSH是指安全外壳协议(Secure Shell),是一种加密的网络传输协议,使用SSH工具常用来远程登录系统和远程执行命令行。SSH客户端很多,码笔记分享SSH工具客户端软件大全,包括Windows系统和MAC系统下的SSH客户端软件: 关于SSH密匙可以参考:SSH密钥详解(生成方式、原理及限制),码笔记主要介绍SSH工具客户端大全: SecureCRT SecureCRT最初是Windows系统下的SSH、Telnet客户端和虚拟终端软件,现在SecureCRT已经支持Mac OS和Linux系统。
20128 0
|
3月前
|
Linux 网络安全
Linux命令(124)之ssh
Linux命令(124)之ssh
33 2