ssh 简介
ssh命令是,secure shell 的缩写。
是一种网络协议,用于机密两台计算机之前的通信,支持各种身份验证机制,主要用与保证远程登录和远程通信的安全,任何网络服务都可以用这个协议来加密。
ssh 架构
SSH 的软件架构是服务器-客户端模式(Server - Client)。在这个架构中,SSH 软件分成两个部分:
向服务器发出请求的部分,称为客户端(client),OpenSSH 的实现为 ssh;
接收客户端发出的请求的部分,称为服务器(server),OpenSSH 的实现为 sshd
补充:
OpenSSH(OpenBSD Secure Shell)是使用 SSH 透过计算机网络加密通信的实现,是一种实现方式。
ssh 基本用法
1.ssh 命令
ssh命令可用来登录远程机器,如:
1 | ssh user@hostname -p 端口 # ssh root@111.222.333 -p 8821 || ssh root@epoos.com -p 8821 |
ssh 在远程机器上执行命令
1 | ssh user@hostname ls # 在远程机器上执行 ls 命令 |
2.ssh -L命令
ssh -L 命令可以用来做本地转发,端口代理,将本地ip和端口通过跳板机代理到目标机器
在本人日常工作中经常会遇到这样的场景,本地机器需要与测试服务器的某个纯IP加端口的 http服务进行直连,以便调试。
但是,由于安全考虑,测试服务器往往不能与本地进行直连,哪怕是连了vpn也不行,唯一的办法就是通过跳板机转发,如图:
此时,ssh -L命令就能派上用场了,如下命令
1 | ssh -L 本地IP:本地端口:目标机器ip:目标机器端口 跳板机用户名@跳板机IP -N(可选,加了之后不会登陆到跳板机,仅仅做转发功能) |
如果本地配置了跳板机的别名,则可直接使用别名
1 | ssh -L 127.0.0.1:8877:10.113.133.78:8877 tbj |
跳板机本地别名配置如下(将此配置写在本地.ssh目录下的config文件,没有config文件则创建一个)
1 | Host tbj |
如上示例,使用ssh -L 命令之后,在本地访问 127.0.0.1:8877 服务的时候,就会被跳板机代理到目标机器 10.113.133.786:8877 服务上了,此时本地即可访问到目标服务器的服务了。
scp 命令
scp 命令是 SSH 提供的一个客户端程序,用来在两台主机之间加密传送文件,可实现文件的上传和下载(可以利用此命令实现简单的应用程序发布)
scp 命令相当于 ssh + cp,先登录到远程机器,然后再复制文件。
1 | 本地复制到远程。 |
基本命令
1 | scp source destination # source 是源文件,destination是目标文件,两个都可以带上host |
rsync 命令
rsync(remote sync)远程同步命令,是一个常用的 Linux 应用程序。
可以用于本地计算机的两个目录之间的同步(能够很方便的实现应用程序发布,比scp更好用)。
也可以在两台远程计算机直接进行文件同步(比如多点备份)
还可以将本地文件同步至远程机器,将远程机器文件同步至本地。
rsync 不是 SSH 工具集的一部分,需要手动安装此命令。
1 | rsync -r source destination # 将源目录同步至目标目录 |
async 远程同步
如果需要远程同步只需将source 或者 destionation 对应的远程username@host
1 | rsync 默认使用 SSH 进行远程登录和数据传输。 |
1 | user@remote_host:/destination |
补充:
rsync 的最大特点就是它可以完成增量备份,也就是默认只复制有变动的文件,能够极大地减少文件同步的时间。