Linux脚本免交互,系统运维|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 命令安装它。
# yum install sshpass
# dnf install sshpass [Fedora 22 及以上版本]
在 Debian/Ubuntu 和它的衍生版中,你可以使用 apt-get 命令来安装。
$ sudo apt-get install sshpass
另外,你也可以从最新的源码安装 sshpass,首先下载源码并从 tar 文件中解压出内容:
$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
$ tar -xvf sshpass.tar.gz
$ cd sshpass-1.06
$ ./configure
# sudo make install
如何在 Linux 中使用 sshpass
sshpass 与 ssh 一起使用,使用下面的命令可以查看 sshpass 的使用选项的完整描述:
$ sshpass -h
下面为显示的 sshpass 帮助内容:
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
正如我之前提到的,sshpass 在用于脚本时才更可靠及更有用,请看下面的示例命令。
使用用户名和密码登录到远程 Linux ssh 服务器(10.42.0.1),并检查文件系统磁盘使用情况,如图所示。
$ sshpass -p 'my_pass_here' ssh aaronkilik@10.42.0.1 'df -h'
重要提示:此处,在命令行中提供了密码,这是不安全的,不建议使用此选项。
sshpass – 使用 SSH 远程登录 Linux
但是,为了防止在屏幕上显示密码,可以使用 -e 标志,并将密码作为 SSHPASS 环境变量的值输入,如下所示:
$ export SSHPASS='my_pass_here'
$ echo $SSHPASS
$ sshpass -e ssh aaronkilik@10.42.0.1 'df -h'
sshpass – 在终端中隐藏密码
注意:在上面的示例中,SSHPASS 环境变量仅用于临时目的,并将在重新启动后删除。
要永久设置 SSHPASS 环境变量,打开 /etc/profile 文件,并在文件开头输入 export 语句:
export SSHPASS='my_pass_here'
保存文件并退出,接着运行下面的命令使更改生效:
$ source /etc/profile
另外,也可以使用 -f 标志,并把密码放在一个文件中。 这样,您可以从文件中读取密码,如下所示:
$ sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h'
sshpass – 在登录时提供密码文件
------- Transfer Files Using SCP -------
$ scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html
------- Backup or Sync Files Using Rsync -------
$ rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/
更多的用法,建议阅读 sshpass 的 man 页面,输入:
$ man sshpass
在本文中,我们解释了 sshpass 是一个非交互式密码验证的简单工具。 虽然这个工具可能是有帮助的,但还是强烈建议使用更安全的 ssh 公钥认证机制。
请在下面的评论栏写下任何问题或评论,以便可以进一步讨论。
作者简介:Aaron Kili 是一位 Linux 和 F.O.S.S 爱好者,未来的 Linux 系统管理员,web 开发人员, 还是 TecMint 原创作者,热爱电脑工作,并乐于分享知识。
本文由 LCTT 原创编译,Linux中国 荣誉推出
Linux脚本免交互,系统运维|sshpass:一个很棒的免交互 SSH 登录工具,但不要用在生产服务器上...相关推荐
- 《Linux运维总结:sshpass一个很棒的免交互SSH登录工具》
文章目录 一.sshpass介绍 二.sshpass安装 三.sshpass使用 四.sshpass实例 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一.sshpass介绍 ssh登陆不能在命 ...
- win10安装sshpass_系统运维|sshpass:一个很棒的免交互 SSH 登录工具,但不要用在生产服务器上...
在大多数情况下,Linux 系统管理员使用 SSH 登录到程 Linux 服务器时,要么是通过密码,要么是无密码 SSH 登录或基于密钥的 SSH 身份验证. 如果你想自动在 SSH 登录提示符中提供 ...
- Linux内外部命令和系统运维
Linux命令是bash命令的子集,位于/bin./sbin./usr/bin目录下,包含文件操作.网络.系统服务等方面,其中/sbin为超级管理员目录,/bin为普通管理员目录,/usr/bin为一 ...
- linux 建立lun分区,系统运维|在 iSCSI Target 服务器中使用LVM创建和设置LUN(二)
LUN是逻辑单元号,它与iSCSI存储服务器共享.iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator).这些来自一个大型存储(SAN:Storage Area Ne ...
- linux 配置离线yum,系统运维|创建局域网内的离线 YUM 仓库
在早先的教程中,我们讨论了如何使用 ISO 镜像和在线 Yum 仓库的方式来创建自己的 Yum 仓库.创建自己的 Yum 仓库是一个不错的想法,但若网络中只有 2-3 台 Linux 机器那就没啥必要 ...
- linux ubuntu 安装ftp,系统运维|如何在 Ubuntu 下安装和配置 FTP 服务器
FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警 ...
- Linux怎么卸载unbound,系统运维|如何在 Arch Linux 中安装 DNSCrypt 和 Unbound
DNSCrypt 是一个用于对 DNS 客户端和 DNS 解析器之间通信进行加密和验证的协议.它可以阻止 DNS 欺骗或中间人攻击. DNSCrypt 可用于大多数的操作系统,包括 Linux,Win ...
- linux开启审计进程,系统运维|Auditd-Linux 服务器安全审计工具
首先,Linux中国祝贺读者 2015羊年春节快乐,万事如意! .下面开始这个新年版审计工具的介绍. 安全防护是首先要考虑的问题.为了避免别人盗取我们的数据,我们需要时刻关注它.安全防护包括很多东西, ...
- linux 5353端口禁止,系统运维|解决DNS污染与劫持之使用特殊DNS端口
os:ubuntu 12.04 LTS 软件:dnsmasq dns测试: dig www.facebook.com @8.8.8.8 +short 37.61.54.158 在wiki词条域名服务器 ...
最新文章
- 【力扣网练习题】移除元素
- 以太坊创始人V 神:普通人看见现在,天才看见未来
- 通州区机器人比赛活动总结_马驹桥镇中心小学在2017通州区青少年机器人竞赛中勇创佳绩...
- Pytorch(3)-数据载入接口:Dataloader、datasets
- MySQL笔记-简单配置主从库
- web网页期末作业-在线教育
- python加密字符串小写字母循环后错两位_Python简单加密程序:如何将Z循环回
- 写代码需要注意的几方面
- Python 爬取 20 万条评论,告诉你周杰伦新歌为啥弄崩 QQ 音乐?
- 百分之六的谷歌云存储桶因配置错误而遭任意访问
- 信用卡交易数据异常检测
- 程序设计语言的特性——心理特性、工程特性、技术特性
- php laravel 开发工具,Laravel 文档工具
- 8位12指令微程序CPU设计
- 【STM32知识点】STM32基础知识总结
- mapreduce面试问题_MapReduce问题与解答第2部分
- 跟循泰国国内游宣传曲MV,像本地人一样游曼谷
- Redis -- 缓存穿透和雪崩
- 阿里和唯品会java开发手册通读链接
- WordPress搭建过的知名网站有哪些?