ssh, scp, rsync笔记

ssh的一些使用
这里贴上阮一峰老师的博客地址
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

ssh user@host
ssh -p 2222 user@host

生成$HOME/.ssh/authorized_keys文件的原理

ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
#将本地src目录打成tar包然后传输到远程主机用户home目录,并且直接解压,太方便了这条命令
cd && tar czv src | ssh user@host 'tar xz'
#将远程logs目录复制到本地
ssh root@192.168.33.10 'tar cz logs' | tar xzv
sudo ssh root@192.168.0.100 'cat /opt/helm/demo.tar.gz' | tar zxf -

下面将一个重磅炸弹,就是ssh隧道

既然ssh可以加密数据,我们可以让所有的不加密的网络数据都走ssh加密

#将本地所有8080端口的数据都通过ssh传输到远程主机
ssh -D 8080 user@host

本地端口转发

场景描述:
host1,host2之间不能联通,但是可以和host3之间联通,所以可以通过host3做一个中间的代理机器

#将本地2121端口的数据,全部通过host3发送到host2的21端口上
ssh -L 2121:host2:21 host3
#"本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。

来,看看跳板机是怎么工作的

ssh -L 9001:host2:22 host3

此时连接本地的9001端口就相当于连接到了远程host2上了

ssh localhost -p 9001

远程端口转发
场景描述: host1, host2为两台互不能联通的外网机器,host3为一台内网机器,可以主动链接host1和host2,但是外面连不进来,所以可以通过如下方式进行联通

#将host1上2121端口的所有数据都通过host3转发到host2的21端口上,奇迹啊
ssh -R 2121:host2:21 host1

rsync

大家都知道,对于一个php程序员来说,早日掌握熟练linux时非常重要的,这将给我们的工作带来非常大的便利。今天把rsync这个工具折腾了一番,非常好用.

rsync主要我这里介绍两种工作方式,一种是运行服务端,一种是借助ssh协议来实现文件传输
1.我们先来用ssh来实现文件传输吧,

将本地的/opt/software/hello.php上传到129这台服务器上,这个时候是借助ssh的,不需要rsyncd这个服务的
需要注意的是目标服务器是要有写权限
rsync -avz ssh /opt/software/hello.php baixs@172.16.173.129:/opt/software/

将远程目录复制到本季,这样是不是在传输文件的时候非常方便呢,是的,非常方便
rsync -ave ssh baixs@172.16.173.129:/opt/software/ /opt/software/

2.就是开启rsyncd这个服务

  1. touch /etc/rsyncd.conf
  2. 文件配置非常简单,我们配置最简洁的一个配置段
uid=root
gid=root
[mysoftware]
path=/opt/software

我们这里没有配置任何密码文件,我这里配置是为了保持简洁
3.启动我们的rsyncd服务端

rsync --daemon --config=/etc/rsyncd.conf  这样就启动了

现在我要吧mysoftware这个模块指定的目录传输到本地,可以这样
rsync -av baixs@172.16.173.129::mysortware /opt/software

执行这个命令就把129mysortware模块下的文件全部拉到本地了

知道这么多足够我们运维了

/etc/ssh/config文件能干吗



公钥加密私钥解密

ssh免密码登入另外一台机器,必须将公钥放到目标机器上才能相互通信

问题: ~/.ssh/authorized_keys 是干吗的

是免秘登入用的

问题:/etc/ssh/config文件能干吗

这个文件是为了方便管理多个远程主机的,例子如下
在这里插入图片描述
每次登入就可以像下面这样子简单粗暴

ssh aliyun

问题: ~/.ssh/knows_hosts能干吗

#密码登入
步骤1:
$ ssh user@host

    The authenticity of host 'host (12.18.429.21)' can't be established.

    RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

    Are you sure you want to continue connecting (yes/no)?
 
 步骤2:接受远程主机的公钥
 Are you sure you want to continue connecting (yes/no)? 
 接受主机之后系统会有一个许可
Warning: Permanently added 'host,47.104.27.47' (RSA) to the list of known hosts.

之后就是输入密码了
Password: (enter password)

当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中

系统的保存在/etc/ssh/ssh_known_hosts中

ssh-add 命令
ssh-agent干吗的
在这里插入图片描述

大部分是自动用来输入密码的

生成私钥,流弊

ssh-keygen -t rsa

如果不想输入yes这样交互,下面是解决方案

如果是配置文件,可以这样配置
在这里插入图片描述

如果是命令行
在这里插入图片描述

ansible中直接这样配置即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值