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