SSH广泛用于脚本自动化,借助SSH,可以在远程主机上执行命令并读取输出,SSH可以在用户和密码进行验证,SSH命令的执行过程中提示输入密码,但是在自动化脚本中,SSH可能在一个循环中执行上百次,每次都得提供密码,但是SSH实现了自动登录

一般发行版不包含SSH,如果需要,得安装openssh-server 和 openssh-client

SSH服务在端口22运行

我们如何连接SSH服务器的远程主机

ssh username@remote_host

username是远端主机的用户,remote_host是域名或者IP地址

ssh locker@192.168.0.2

图片

整体的连接流程中会询问用户密码,一旦认证成功,会返回一个shell

一般来说,ssh会在默认端口22运行,不过,有些运行SSH的服务器不在这个端口运行,我们可以使用ssh -p port_no来指定端口

连接端口在422的SSH,可以使用ssh user@localhost -p 422

我们可以再shell中执行这个命令,并且应该可以指定输入的密码

ssh user@remote_host “COMMADNS” > stdout.txt 2> error.txt

利用ssh发送了命令,并将命令执行结果返回到本地输出

如果需要多条命令,可以通过stdout 来获取

ssh user@host ‘commadn1;command2’

或者将输出写入到一个文件中

ssh user@remote_host “COMMANDS” > stdout.txt 2> errors.txt

可以通过管道的命令序列将命令传递给SSH命令

echo “COMMADNS” | ssh user@remote_host > stdout.txt 2> error.txt

我们执行如下的方式

ssh mec@192.168.0.1 “echo user: ¥(whoami); echo OS:$(uname)“

COMMADNS=”command1;command2;command3“

我们可以再命令序列中,用子shell来传递一个更加复杂的子shell

我们可以执行子shell,假如我们有一个shell脚本,可以用来收集一组远程主机的运行时间,运行时间是开机时间,uptime命令是显示系统加点后运行了多久

图片

利用Uptime的命令来获取到开机时间

ssh还有一些其他选项奶奶个

支持对数据的压缩传递,使用-C

ssh -C user@hostname COMMANDS

我们将数据重定向到远程shhel的stdin

将这个数据发给了远程,并且输入到了stdin

echo “text” | ssh user@remote_host ‘cat >> list’

将本地的数据传递给远程

ssh usr@remote_host ‘cat >> list’ < file

本地传给了远程文件list

发表评论

邮箱地址不会被公开。 必填项已用*标注