bat脚本ssh登陆服务器_bat ssh

hacker|
101

文章目录:

如何使用ssh登陆windows服务器

1. ssh简介以及本例的应用场景

① ssh的简介

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

② 本例的应用场景

用户在client(Linux)上通过ssh远程执行server(Windows)上的命令,比如c:\test.bat

注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。

2. ssh服务器的安装(Windows)

ssh服务器软件有许多中,我们这里使用的是免费的freeSSHd。

① 首先从官方站点下载软件并安装()

② 安装完成后进入配置界面(Server Status),确认SSH server正在运行状态

③ 进入Users界面,设定一个访问的用户账户(比如xut)

这里我们建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,我们选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。

④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)

此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等),此处不再介绍。

注意:服务器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。

3. ssh客户端的设置(Linux)

由于我们的客户端采用的是Linux,所以不用安装客户端软件,系统自带的就有。

我们需要在Linux上创建一个共有和私有的密钥对,私有密钥放到客户端(Linux)上,共有密钥放到服务器端(Windows)上。在Linux上通过ssh-keygen命令来创建。

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): [直接回车]

Enter passphrase (empty for no passphrase): [直接回车]

Enter same passphrase again: [直接回车]

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:

4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53

其中,/root/.ssh/id_rsa为私有密钥,/root/.ssh/id_rsa.pub为共有的密钥。

此时,需要把共有密钥放到服务器端(Windows)进行保存,以便于服务器端进行安全检查。

我们通过认证界面找到存放共有密钥的地址(Public key folder)。

如上图所示,然后在c:\Program Files\freeSSHd目录下创建以登录用户名为名字的文本文件,此处举例为xut文件。并将/root/.ssh/id_rsa.pub文件中的内容拷贝到c:\Program Files\freeSSHd\xut文件中。

至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。

ssh xut@172.28.xx.xxx "c:\test.bat"

这条命令将执行服务器端的C盘下的test.bat文件,并把结果返回,整个操作不需输入密码。

4. ssh客户端的设置(Windows)

由于Windows不附带ssh的客户端和服务器端,我们这里找一个免费的客户端软件PuTTY。

PuttY主页:

各种客户端的比较:

在Putty主页,我们下载putty.zip(含除了PuTTYtel以外的所有文件),然后解压会发现一个叫plink.exe的文件,这就是我们的ssh客户端命令行软件。

我们首先要成一个共有和私有的密钥对,使用putty.zip中附带的PUTTYGEN.exe生成。

启动PUTTYGEN.exe后可以见到下图界面,点击[Generate]即可生成所需密钥对。

注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将保持不变。

鼠标在这里不停移动

密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没有passphrase选择忽略即可。假设我们这里把私钥保存为pri_key.ppk。

我们把公钥放在freeSSHd端(ssh服务器端)进行保存,具体保存方法参见【ssh客户端的设置(Linux)】。

在Windows客户端,执行如下命令进行ssh连接,并不需要输入密码即可通过密钥进行自动认证。

plink -i pri_key.ppk xut@172.28.xx.xxx c:\test.bat

(此时将执行服务器端的c:\test.bat脚本。)

注:第一次连接时将出现“The server's host key is not cached in the registry…

如何写shell脚本自动通过ssh命令登录到服务器

用EXPECT实现用密码登录,也可配置成不需要密码

#!/usr/bin/expect -f

if { $argc 3 } {

puts stderr "Usage: $argv0 IPAdress Login OldPasswd"

exit

}

set IPADDR [lindex $argv 0]

set LOGIN [lindex $argv 1]

set OLD_PW [lindex $argv 2]

set timeout 30

stty -echo

spawn ssh $IPADDR -l $LOGIN

expect {

"*Password:*" {

send "$OLD_PW\r"

exp_continue

} "*Last login:*" {

#interact

exit 0

} timeout {

send_user "connection to $IPADDR timeout!\n"

exit 1

} "*incorrect*" {

send_user "password incorrect!\n"

exit 2

} "*Permission*" { #for LINUX ssh

send_user "password Error!\n"

exit 2

} eof {

exit 3

}

}

批处理实现ssh自动登录

#!/bin/sh

j=0

for i in `cat ~/ip_text`

do

let j+=1

let k=$j%2

if [ $k -eq 0 ]

then

ssh root@$i EOF outfile.txt

cat /var/log/boot_count

exit

EOF

else

echo $i outfile.txt

fi

done

大概就这样子,奇数行直接输出到outfile.txt中,偶数行是IP,直接访问,然后将结果输出到outfile.txt中,但是ssh是否接受stdin这样子的输入我不记得了,要是不接受的话就没有办法了- -!

高分求教:有一台Linux服务器,求教怎么通过bat批处理命令自动登录服务器并执行某个shell命令

装了 expect 的话:

#!/usr/bin/expect -f

spawn telnet 10.1.18.8

expect "login:"    #等待输入用户名提示

send "root\n"      #输入用户名

expect "Password:"    #等待输入密码提示

send "root\n"      #输入密码  

expect "# "        #根据实际提示符修改

send "sh /update.sh\n"    #执行脚本

expect "# "        #根据实际提示符修改

send "exit\n"      #退出telnet

expect eof

没有 expect:

#! /bin/bash

(

sleep 1

echo 'root'    #用户名

sleep 1

echo 'root'    #密码

sleep 1

echo 'sh /update.sh'    #执行脚本

sleep 1

) | telnet 10.1.18.8

脚本中ssh自动登录到远程服务器。但登录后就脚本的执行就中断了,等到退出登录后又继续执行。

man ssh

[user@]hostname [command]

ssh -p port user@hostname "远程命令"

1条大神的评论

  • avatar
    访客 2022-07-11 上午 09:52:34

    bat脚本。)注:第一次连接时将出现“The server's host key is not cached in the registry…如何写shell脚本自动通过

发表评论