SSH,全称为Secure SHell安全外壳协议,是一种加密的网络传输协议。SSH仅仅是一协议标准,其具体的实现有不少,既有开源实现的OpenSSH,也有商业实现方案。使用范围最普遍的固然是开源实现OpenSSH。linux上就是使用的OpenSSH。SSH经常使用来开通加密传输隧道,因此不少其余经常使用的命令均可以经过SSH加密传输,如cp加密为scp,ftp加密为sftp。 SCP,全称为Secure copy安全拷贝,用于在Linux下进行远程拷贝文件的命令。 SFTP,全称为Secure File Transfer Protocol安全文件传输协议,html
讲解SSH命令前,简单理解SSH原理。既然SSH是加密的网络传输协议,那么,SSH登陆时是怎么保证密码的安全性呢?linux
其实,SSH登陆时是使用非对称加密算法RSA进行加解密,因为RSA计算过程复杂,耗时较长,因此登陆后SSH客户端和服务器之间数据传输是约定了相同的密钥进行对称加解密,提升效率。算法
咱们知道,SSH登陆有两种方式:口令登陆、公钥登陆。两种方式登陆过程大体以下: 口令登陆:chrome
公钥登陆:浏览器
以上流程涉及到的公钥私钥保存在以下图目录。 安全
ssh username@remote_ip
:登陆远程主机,默认22端口,若是服务器不是22端口,可使用-p指定其余端口。
ssh -D local_port username@remote_ip
:-D表示动态代理,绑定本地local_port端口,发向该端口的请求都将发到远程主机,就好像你在远程主机上执行该请求同样。结合chrome的aotu-proxy、switchyOmega等代理插件,使用这些插件将浏览器请求导到local_port,协议为sock5,能够实现fq。
ssh -L local_port:third_ip:third_port username@remote_ip
:本地端口转发,能够将访问本地端口loca_port的数据经过远程主机remote_ip,转发到第三方主机的端口,third_ip:third_port,若是third_ip为127.0.0.1,则表示访问远程remote_ip的指定端口third_port。使用该功能能够实现防火墙穿透。
ssh -R remote_port:third_ip:third_port username@remote_ip
:远程端口转发,能够监听远程的remote_port端口,将端口的数据经过remote_ip主机转发到third_ip。
ssh -NfC username@remote_ip
:-N表示不执行命令,用于端口转发,-f表示后台运行,-C表示开启数据压缩服务器
scp local_file username@remote_ip:remote_folder
或者scp local_file username@remote_ip:remote_file
:基本用法,用于复制文件到远程,改变位置也能够从远程复制文件到本地。 scp -r local_folder remote_username@remote_ip:remote_folder
:复制目录网络
sftp是一个加密的、交互式的相似于ftp的文件传输程序。使用sftp登陆远程后,sftp有两套类似的命令,能够同时操做远程和本地目录。 sftp [-P port] username@remote_ip
:登陆服务器,登陆有进入交互界面,sftp>。
pwd和lpwd
:pwd显示远程当前目录,lpwd显示本地当前目录,全部命令前加l
表示local本地。
ls和lls
:ls显示远程当前目录下的东西,lls显示本地
get file.sub
:下载文件到本地
put file.sub
:上传文件到远程ssh
以上。网络传输协议