SSH 无密码远程执行脚本

  ssh无密码登录及远程执行脚本要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS7为例。

  测试环境:机器A(10.0.224.80);机器B(192.168.7.172)。现想A通过ssh免密码在B上远程执行命令。

  1、首先在A机下生成公钥/私钥对:(-P表示密码,-P ‘‘ 就表示空密码,一次回车即可。在~/.ssh会生成id_rsa和id_rsa.pub两个文件)

[[email protected] home]# ssh-keygen -t rsa -P ‘‘
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    (直接回车)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e8:a1:c0:cc:d0:2c:88:82:35:0f:c7:75:2b:79:14:72 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|  +...o E.       |
|++ =.  * .       |
|B o . o o        |
|.*     +         |
|  =   o S        |
|   . o .         |
|    . .          |
|                 |
|                 |
+-----------------+[[email protected] home]# cd ~/.ssh/[[email protected] .ssh]# ll总用量 12-rw-------. 1 root root 1675 4月   5 13:27 id_rsa-rw-r--r--. 1 root root  395 4月   5 13:27 id_rsa.pub-rw-r--r--. 1 root root 2492 4月   5 10:52 known_hosts

  2、将A机下的id_rsa.pub复制到B机下

[[email protected] .ssh]# scp ~/.ssh/id_rsa.pub [email protected]192.168.7.172:/home
[email protected]192.168.7.172‘s password:
id_rsa.pub                                                                   100%  395     0.4KB/s   00:00    

  3、在B机上,将从A机复制的id_rsa.pub添加到~/.ssh/authorzied_keys文件里,并赋予权限

[[email protected] ~]# cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
[[email protected] ~]# chmod 600 ~/.ssh/authorized_keys

  4、测试(注,第一次登录时需要手动输入yes)

    执行远程命令

[[email protected] home]# ssh [email protected]192.168.7.172 "cd /home; ls"
calico.tar
laizy
nagios
ubuntu.tar
[[email protected] home]# ssh [email protected]192.168.7.172 "ifconfig ens33"
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.172  netmask 255.255.255.0  broadcast 192.168.7.255
        inet6 fe80::20c:29ff:fecd:7e7c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cd:7e:7c  txqueuelen 1000  (Ethernet)
        RX packets 216165  bytes 20851014 (19.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 198202  bytes 19741868 (18.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] home]# 

    免密码,远程登录

[[email protected] home]# ssh [email protected]192.168.7.172
Last login: Tue Apr  5 12:04:26 2016 from 192.168.7.146
[[email protected] ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.172  netmask 255.255.255.0  broadcast 192.168.7.255
        inet6 fe80::20c:29ff:fecd:7e7c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cd:7e:7c  txqueuelen 1000  (Ethernet)
        RX packets 217411  bytes 20974871 (20.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 199328  bytes 19856521 (18.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
时间: 2024-10-11 18:13:35

SSH 无密码远程执行脚本的相关文章

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远程执行脚本tomcat未启动

背景: 在本地写好重启tomcat的脚本后,本地执行脚本没有问题,但在远程服务器上SSH免密登录执行后. 发现可以把TOMCAT杀死,但tomcat却起不来.这个问题困扰了我一天.终于解决了,决定写篇博文 与大家分享. 把我遇到的怪异现象分享给大家: 1 脚本执行了吗?sh -x 查看脚本执行过程,确实执行了啊,也没有报错.但到目标服务器去看没有java 进程也没有相应的端口.邪门了,到底是什么原因呢? 2 看日志.在远程执行脚本的时候就把日志打开了,tail -f 发现没有一丁点的日志输出.

SSH登录远程主机执行脚本找不到环境变量

这是因为在Linux上,bash会有四种模式,根据不同的case,Linux会加载不同模式的bash.一般如果你自己直接登录主机,能看到环境变量,但是使用ssh 远程登录执行脚本就找不到环境变量,那么在你的脚本中修改脚本解释器为如下形式,就能解决你的问题: #!/bin/bash --login 如果想了解详细的bash的四种模式以及各种模式的特点,请参考下面这篇文章,分析的非常详细: SSH连接远程主机执行脚本的环境变量问题

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

远程执行脚本

1 #######################################定义变量######################################################### 2 $CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand.Path.LastIndexOf('\')+1) 3 #定义服务器列表 4 $server_list = "server_list

saltstack在windows客户端远程执行脚本提示路径不对的问题

saltstack在windows客户端远程执行脚本提示路径不对的问题 环境: salt-master ==2018.3.0 salt-minion ==2018.3.0 python== 2.7.5 centos==7 问题描述: salt有个远程执行命令的模块cmd.script,在使用该模块时,出现错误: salt 'minion-id' cmd.script salt://test.ps1 shell=powershell 其中salt://为/etc/salt.conf定义的base路

Linux 批量建立信任关系,实现ssh无密码登陆的脚本

作用: 把当前机器的ssh公钥复制到其他机器,以实现从当前机器可以ssh无密码登陆到其他机器 使用方法: 1)把要添加的ip地址写入到一个文件中,比如host 2)把脚本保存为sh文件,如 install_ssh.sh 设置可执行权限 3)改写脚本中的密码设置,目前只支持固定几个密码. 4)  执行命令 sh install_ssh.sh <host 代码: #!/bin/sh auto_ssh_copy_id() { local HOST=$1 local PASSWD=$2 expect -

【笔记】【Informatica】Java组件调用ssh客户端远程执行linux系统上的shell脚本

try{    String cmdStr="C:\\SSH\\ssh2.exe [email protected] /home/azik/tmp/echo_date.sh";    Process mypro=Runtime.getRuntime().exec(cmdStr);    mypro.waitFor();    Integer errno=mypro.exitValue();    logInfo("The errorlevel is :"+errno

实现ssh无密码登录 shell脚本

默认远程主机上已经存在 -/.ssh 目录.在自己PC上执行下面脚本,输入服务器用户名和ip地址,下次登录可实现无密码登录. #!/bin/bash id_res_pub=~/.ssh/id_rsa.pub if [ ! -f "$id_res_pub" ];then ssh-keygen -t rsa else echo "id_rsa.pub is exist!" fi echo echo "Enter remote host user name&qu