如何远程通过Xshell实现对linux主机的开、关机及重启

如何远程通过Xshell实现对linux主机的开、关机及重启,第1张

关机的情况无法远程开机,关机命令shutdown,重启命令reboot,使用步骤如下:

1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。

2、其次,以重启为例,在linux命令行中输入:reboot。

3、最后,按下回车键执行shell指令,此时会看到linux主机成功重启了。

工具/原料

windows server2012电脑一台

方法/步骤

第一步:将鼠标移至最右下角,也就是win7那个“显示桌面”那个位置;

第二步:桌面会同时出现两个灰色方块,左边是本服务器当前时间,右边竖条的分别是“搜索功能”“宫格触摸界面”“设置”,要操作关机,所以单击“设置”;

第三步:单击“电源”按钮;

第四步:出现“关机/重启”两个选择按钮,这里选择“关机”;

第五步:系统出现下拉列表,要求选择关机原因,一般选择“硬件:维护(计划外)”,再单击蓝色按钮“继续”;

第六步:系统正常关机

可以的

@echo off

net use \\1921681100 /user:admin 12345678

shutdown -s -f -m \\1921681100 -t 0

安装步骤:

1、进入链接下载最新 OpenSSH-Win64zip(64位系统),解压至C:\Program Files\OpenSSH

2、打开cmd,cd进入C:\Program Files\OpenSSH(安装目录),执行命令:

powershellexe -ExecutionPolicy Bypass -File install-sshdps1

3、设置服务自动启动并启动服务:

sc config sshd start= auto

net start sshd

到此服务已经安装完毕,默认端口一样是22,默认用户名密码为Window账户名和密码,当然防火墙还是要设置对应端口允许通讯

修改设置:

通常linux下会修改ssh_config文件来修改ssh配置,但在安装目录并没有发现这个文件,查阅官方wiki后发现,原来是在C:\ProgramData\ssh目录下(此目录为隐藏目录)

端口号:Port 22

密钥访问:PubkeyAuthentication yes

密码访问:PasswordAuthentication no

空密码:PermitEmptyPasswords no

然后进入C:\Users\账户名\ssh目录,创建authorized_keys公钥文件(也可在ssh_config修改路径)(仅限77之前版本,79版本请看最后更新)

设置完成后重启sshd服务,接下来就可以使用Xshell等工具使用密钥连接了~

踩过的坑:

命令行不识别空格时:C:\Program Files\用C:\Progra~1\替代

Windows Service2012R2即使配置了ssh/authorized_keys公钥,连接时依然显示没有注册公钥。。。

查阅了官方wiki判断可能是权限问题:Fix SSH file permissions

进入C:\Program Files\OpenSSH(安装目录),右键 FixHostFilePermissionsps1使用PowerShell运行,命令行提示全选是,重启sshd服务后密钥连接正常

2019517更新:

新部署服务器的时候,发现公钥无法注册,发现新版本有变动:

 

 

参考官方wiki:administrators_authorized_keys

Administrators用户组的用户连接公钥,默认位置为

C:\ProgramData\ssh\administrators_authorized_keys

并且需要设置权限,在CMD中执行命令:

icacls administrators_authorized_keys /inheritance:r

icacls administrators_authorized_keys /grant SYSTEM:(F)

icacls administrators_authorized_keys /grant BUILTIN\Administrators:(F)

修改ssh_config文件:

AuthorizedKeysFile %programdata%/ssh/administrators_authorized_keys

重启sshd服务,即可使用密钥登陆SSH

3 安装expect 方法

https://blogcsdnnet/robertsong2004/article/details/38983259转自

 

 

6个Expect脚本示例

2014年09月01日 20:48:32 HaveFunInLinux 阅读数 7982

 

本文译至:http://wwwthegeekstuffcom/2010/10/expect-examples/

Expect 脚本语言用于自动提交输入到交互程序。它相比其它脚本语言简单易学。使用expect脚本的系统管理员和开发人员可以轻松地自动化冗余任务。它的工作原理是等待特定字符串,并发送或响应相应的字符串。

以下三个expect命令用于任何自动化互动的过程。

send – 发送字符串到进程

expect – 等待来自进程的特定的字符串

spawn – 启动命令 

请确保在您的系统上安装expect软件包,因为它不会被默认安装。 一旦安装后,你会看到expect解释器“/usr/bin/expect”。 一般来说,expect脚本文件具有exp的扩展。

1 Expect “Hello World”范例

下面的expect脚本等待具体字符串“hello”。 当它找到它时(在用户输入后),“world”字符串将作为应答发送。

#!/usr/bin/expect

expect "hello"

send "world"

2 等待的字符串超时

默认情况下,等待的超时时间为10秒。 如果你不为expect命令输入任何东西,将在20秒内超时。 您也可以更改超时时间,如下所示。

#!/usr/bin/expect

set timeout 10

expect "hello"

send "world"

3 使用Expect自动化用户进程

在Expect的帮助下,你可以自动化用户进程,并得到期望的输出。 例如,您可以使用Expect编写测试脚本来简化项目的测试用例。

下面的例子执行了额外的程序自动化。

#!/usr/bin/expect

set timeout 20

spawn "/additionpl"

expect "Enter the number1 :" { send "12\r" }

expect "Enter the number2 :" { send "23\r" }

interact

执行上面的脚本,输出结果如下所示。

$ /user_procexp

spawn /additionpl

Enter the number1 : 12

Enter the number2 : 23

Result : 35

如果你写的代码没有interact命令,在这种情况下,脚本会在发送字符串“23\r”后立即退出。 interact命令执行控制,处理addtion进程的作业,并生成预期的结果。

4 在$expect_out变量中的匹配和不匹配的内容

在字符串匹配成功时expect返回,但在此之前它将匹配的字符串存储在$expect_out(0,string)。之前所收到的字符串加上匹配的字符串存储在$expect_out(buffer)。下面的例子展示了这两个变量匹配的值。

#!/usr/bin/expect

set timeout 20

spawn "/hellopl"

expect "hello"

send "no match : <$expect_out(buffer)> \n"

send "match :  <$expect_out(0,string)>\n"

interact

hellopl程序只是打印两行,如下图所示。

#!/usr/bin/perl

print "Perl program\n";

print "hello world\n";

如下所示执行。

$ /matchexp

spawn /hellopl

Perl program

hello world

no match :  <Perl program

hello>

match :  <hello>

5 自动化SU登录到其他用户帐户 

Expect可以让你从程序中传递密码给Linux登录账号,而不是在终端输入密码。在下面的程序中,su自动登录到需要的账户上。 

#!/usr/bin/expect

set timeout 20

set user [lindex $argv 0]

set password [lindex $argv 1]

spawn su $user

expect "Password:"

send "$password\r";

interact

如下所示执行上面的expect程序。 

bala@localhost $ /suexp guest guest

spawn su guest

Password:

guest@localhost $

运行上面的脚本后,从bala用户帐户登录到guest用户帐户。 

6 SSH登录到另一台计算机

下面给出的expect程序项目可自动从一台计算机ssh登录到另一台机器。 

#!/usr/bin/expect

set timeout 20

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

spawn ssh "$user\@$ip"

expect "Password:"

send "$password\r";

interact

执行上面的expect程序如下所示。 

guest@host1 $ /sshexp 19216812 root password

spawn ssh root@19216812

Password:

Last login: Sat Oct  9 04:11:35 2010 from host1geetkstuffcom

root@host2 #

4 我这边的简单命令为

脚本为:#!/usr/bin/expectset timeout 20set ip [lindex $argv 0]set user [lindex $argv 1]set password [lindex $argv 2]

spawn ssh "$user\@$ip" "net start gscloud"expect "password:"send "$password\r";

interact

执行的命令为:

/deploy/startwin 1024196213 administrator Test1127!

1、首先我们需要双击打开电脑桌面的“控制面板”

2、然后我们需要点击“更改账户类型”

3、然后我们需要双击需要更改的用户

4、选择“更改账户名称”可为电脑账户设置用户名;选择“更改密码”为电脑账户设置密码。PS:一定要为电脑账户设置密码。就可以能在远程桌面的登录界面进行重启操作了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何远程通过Xshell实现对linux主机的开、关机及重启

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情