Linux下使用SSH非交互式远程执行命令脚本---ssh无密码登陆

通过SSH命令远程执行命令首先需要建立相关主机间的信任关系。否则,在执行命令前SSH命令会提示你输入远程主机的密码。建立主机间信任关系的方法如下-即ssh无密码输入: 
假设我们有两台主机。主机名分别为linuxa和linuxb。首先在linuxa上以当前用户运行如下命令生成本主机的公钥和私钥文件: 
ssh-keygen -t rsa 
    上述命令执行后,隐藏目录~/.ssh下会出现两个文件:id_rsa和id_rsa.pub。其中,id_rsa.pub为公钥文件

将该文件的内容追加到对端主机linuxb上~/.ssh目录下的authorized_keys文件中。若该文件不存在,可自行创建之

下面是一个id_rsa.pub文件示例的文件内容: 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtbW/vKjrIkTfFjSJP9FyVb3kQStc31oBuiKVaCZzoejxSM2+ck6CB09l4BoFujpI0+omL4NptxkEAgkCGnMco2yXrVSOqhqyaQV2BnDPkyMoEq2MGB9hSc9xQKa+Q== [email protected]

接下来,就可以在不输入密码的情况下在远程主机私执行命令了。命令格式如下:

for ip in iplist

scp 文件名 $ip:/目录名

ssh $i /全路径文件名

ssh 远程用户名@远程主机IP地址 ‘远程命令或者脚本’ 
     比如, 
    ssh [email protected] ‘hostname‘ 
    上述命令执行后,终端输出的是对端主机的主机名,而不是你当前登录的主机的主机名。说明hostname这个命令其实是在对端主机上运行的。     若要远程执行脚本,只需要将上面的命令的第三个参数改为要执行的远程脚本的文件名全称即可。比如: 
    ssh [email protected] ‘/home/userA/script/test.sh‘ 
    需要特别注意的是:当远程脚本中使用了一些命令,而这些命令被Shell解析器的识别依赖于PATH环境变量时,该脚本需要在其第一行中包含执行profile文件的命令。比如,在Bash中,该脚本的第一行为: 
    source ~/.bashrc 
    否则,远程脚本可能报一些命令无法找到的错误。

时间: 2024-12-14 18:17:11

Linux下使用SSH非交互式远程执行命令脚本---ssh无密码登陆的相关文章

linux 下使用指定的用户来执行命令

有时间,我们需要在开机的时候执行一些特定的程序或都脚本,因为涉及到安全主面的问题,所以又不想用root来执行,那怎样办呢. 经过查看 su 的帮助提示,发现: [[email protected] ~]# su --help Usage: su [OPTION]... [-] [USER [ARG]...] Change the effective user id and group id to that of USER.   -, -l, --login               make 

Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项

前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh [email protected] "test -f /tmp/a.sh"; then #配置了免密登录,此处不用输入密码 echo "$line file exist." else echo "$line file not exist." fidone < lis

linux shenll 远程执行本地脚本或者执行命令

一.远程执行本地脚本 ssh [email protected]服务器IP地址 "bash"< **.sh 多台服务器可以用循环来实现. ssh [email protected] "bash" < **.sh $name $name2 # name为变量,此方法可以实现远程脚本调用本地变量. 二.远程执行命令 ssh [email protected] "cd /data/gamedate;ll" 双引号可以执行多条命令并用';'分

远程执行命令:paramiko

paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [[email protected] ~]$ yum install -y python-paramiko 通过用户名密码登录远程客户端主机并执行命令: #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko ssh = paramiko.SSHClient() # 创建一个ssh客户端对象 ssh.set_missing_host_key_pol

ssh非交互式密码授权远程执行脚本

公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建ansible等自动化运维工具,我们直接通过ssh远程执行即可完成 本文以三台服务器为例,系统版本:Centos7.3 1.安装sshpass cd /etc/yum.repos.d/ wgethttp://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo yum instal

解决SSH远程执行命令找不到环境变量的问题

通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同,看起来很诡异的现象,根本原因在于这两种方式使用的bash模式不同! 1. 通过SSH登录后再执行命令和脚本这种方式会使用Bash的interactive + login shell模式,这里面有两个概念需要解释:interactive和login. login故名思义,即登陆,login shell

day8-套接字sock 实现SSH远程执行命令功能

复习 #面向对象编程#类:#对象#实例化 :从一个类到产生一个对象的过程    #对象 = 类名()   #__init__初始化方法,是为了给一个具体的对象放一些初识的属性#在类中:    # 静态属性 直接定义在类中的属性,使用静态属性:类名.对象名都可以调用    # 动态属性 就是方法 就是定义在类中的函数 默认传一个self# class Person:#     money = 100# sister = Person()# father = Person()# Person.mon

Linux监控平台(主被动模式,添加监控主机,添加图形,处理图形乱码,远程执行命令)

一.主动模式和被动模式(针对客户端) 主动模式:客户端使用完数据后,每隔自定义事件主动上报给服务端 应用环境:当客户端数量非常多,建议使用主动模式,这样可以降低服务端的压力. 被动模式:服务端会主动连接客户端,客户端被动连接,把监控信息传递给服务端 应用环境:服务端有公网ip,客户端只有内网ip,但是能连接外网,可以主动上报. 这种场景适合主动模式. 二.添加监控主机 添加主机: 再添加主机之前,我们要先添加一个主机群组,在配置中 主机群组的右上角有一个创建主机 然后点主机,右上角有一个创建主机

ssh 远程执行命令

SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进行一个小小的总结. 远程执行命令 如果我们要查看一下某台主机的磁盘使用情况,是不是必须要登录到目标主机上才能执行 df 命令呢?当然不是的,我们可以使用 ssh 命令在远程的主机上执行 df 命令,然后直接把结果显示出来.整个过程就像是在本地执行了一条命令一样: $ ssh [email prote