首页 > 系统相关 >Linux-shell脚本使用ssh远程执行命令通过密码的方式登录

Linux-shell脚本使用ssh远程执行命令通过密码的方式登录

时间:2023-10-19 10:26:42浏览次数:36  
标签:shell tt 命令 HOST ssh sshpass Linux 远程

1. sshpass简介

sshpass 是一个在非交互式 ssh 会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于 Shell 脚本等自动化场景。在 Red Hat 系统中,可以通过 epel-release 源安装 sshpass。

epel-release 源是 Extra Packages for Enterprise Linux (EPEL) 的缩写,是由 Fedora 社区维护的,为 RHEL 和 CentOS 提供额外的软件包和库。默认情况下,RHEL 和 CentOS 并没有启用 EPEL 源,需要手动进行配置。

2. sshpass安装

sshpass在centos上安装方法

yum install -y epel-release  

yum install -y sshpass

sshpass在ubuntu安装

apt-get  install sshpass

3. sshpass用法

sshpass -p <服务器密码> ssh -tt root@${服务器IP}

例如:  

sshpass -p 123456 ssh -tt [email protected]

-tt 的意思:

在使用 sshpass 命令调用 ssh 时,通常建议使用 -t 选项来分配为 ssh 命令启动的伪终端。这样可以使远程 shell 在连接关闭后正常终止。如果不使用 -t 选项,可能会导致远程 shell 无法正确退出。

而 -tt 选项是在 -t 的基础上增加了一次远程命令的强制性 tty 分配,它的意思是在远程主机上分配一个强制性的 tty 终端,无论是否需要。其实,-tt 选项是为了解决不同版本的 SSH 之间的兼容性问题而设置的。

对于简单的命令:

如果是简单执行几个命令,则:

sshpass -p <服务器密码> ssh -tt root@${服务器IP}  "cd /home ; ls"

基本能完成常用的对于远程节点的管理了,几个注意的点:

(1) 双引号,必须有。如果不加双引号,第二个ls命令在本地执行

(2) 分号,两个命令之间用分号隔开

对于脚本的方式:

  有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现:

#!/bin/bash

HOST="10.0.0.1"

HOST_PASSWORD=123456

sshpass -p ${HOST_PASSWORD} ssh -tt root@${HOST}  > /dev/null 2>&1 << EOF

cd /tmp

mkdir  abc

touch 1.txt

exit

EOF

echo "finished"

远程执行的内容在“<< EOF ” 至“ EOF ”之间,在远程机器上的操作就位于其中,注意的点:

(1) << EOF,ssh后直到遇到EOF这样的内容结束,EOF可以随便修改成其他形式。

(2) 重定向目的在于不显示远程的输出了

(3) 在结束前,加exit退出远程节点

 

标签:shell,tt,命令,HOST,ssh,sshpass,Linux,远程
From: https://www.cnblogs.com/yeyuzhuanjia/p/17774087.html

相关文章

  • Linux-Shell 小数运算,四舍五入
    在shell中做小数运算,可以借助bc或者awk工具一、使用bc做小数运算,scale指定小数点位数1、加法运算(scale参数无效)#echo"5.999+5.001"|bc6.000#echo"5.111+5.1114"|bc10.2224运算结果小数点位数以加数中最大的为准 2、减法运算(scale参数无效)  同加法运算  运算......
  • 配置自定义服务为linux系统服务
    背景使用go语言写了一个测试环境部署上报的备份服务,以防因为主服务挂了影响部署操作。 想把这个backup服务设置了系统服务,如果因环境重启等异常,可以自动重启使用的环境的Centos71、首先需要创建一个systemdunit存储配置文件[Unit]Description=deployreportbackupse......
  • linux应急处置
    实战手把手教你,Linux服务器应急处置教学小编 CyberTorres 2023-10-0914:48 发表于广东收录于合集#linux1个#服务器1个#技术分享2个当你负责的服务器被黑了,怎么办?没遭遇过如此大风大浪的运维人员:哦,**!我该怎么办,点根香烟冷静一下。Wait!小编请您先切断网络,再......
  • 你是否还迷茫要不要学习Linux?
    近几年Linux这个词好像很流行,无论是现实工作中,还是在网络信息中均可以听到或者看到有关Linux相关的内容,可以说Linux无处不在。说到这,有人可能会问了,我对Linux比较感兴趣,但是没有接触过Linux,对它不了解,不知道是否适合自己,是否值得我花费时间和经历去深入学习,因此陷入一种比较迷茫的......
  • [ Linux ] 手动放行端口
    https://www.cnblogs.com/yeungchie/在云服务商的网页端操作防火墙会不生效,不清楚原因。可以用下面的命令来手动放行端口。iptables-tnat-IPREROUTING-ptcp--dport$port-mstate--stateNEW-jACCEPTiptables-PFORWARDACCEPT......
  • linux 内核 ---信号量(semaphore)
    信号量使用说明(1)定义信号量structsemaphoresem;(2)初始化信号量voidsema_init(structsemaphore*sem,intval);该函数初始化信号量,并设置信号量sem的值为val。(3)获得信号量externvoiddown(structsemaphore*sem);externint__must_checkdown_interruptible(st......
  • 手机使用linux
    手机使用linux调查方法termux使用手机linux分析手机是mate40使用内置linux需要获取root,华为关闭root获取网站还要刷机,麒麟9000还加了很多锁使用termux不需要root,直接虚拟一个linux就是额外占用一个系统准备手机华为mate40:安装termux能上外网(服了,还......
  • linux系统安装ftp记录
    使用的是yum工具安装ftp服务器1.首先安装ftp-0.17-89.el9.x86_64,这个不是ftp服务器程序,只是ftp访问工具:yuminstall-yftp2.安装vsftpd,ftp服务程序:yuminstall-y vsftpd启动服务:       systemctlstartvsftpd.service随系统启动:       ......
  • SSH服务常见问题及报错汇总
    SSH常见问题汇总目录ssh知识要点2什么是ssh服务3ssh的软件包3客户端软件包3服务端软件3SSH服务配置文件说明3ssh_config和sshd_config配置文件区别3服务端优化配置选项7ssh入侵案例说明8IP如何防止SSH登录入侵小结:8修改服务器默认监听端口报错8ssh登录失败,报错:Pseudo-t......
  • CentOS 7编译Linux内核(6.5.7)详细步骤
    CentOS7编译Linux内核(6.5.7)详细步骤前言对于一件要完成的任务,如果已有现成的、完善的方法文档可供参考,则博文只需引用链接即可,无需重复写一遍。写博客是结合自身需求,总结之前网络上没有的方法。本文即基于CentOS764位,给出编译当前最新版Linux(6.5.7)的详细步骤。参考链接:......