SSH & SCP & SFTP
SSH、SCP和SFTP都是SSH软件包的组成部分。
SSH 是 Secure Shell 的缩写,是建立在应用层基础上的安全协议。不管SCP还是SFTP,都是SSH的功能之一,也都是使用SSH协议来传输文件的, 实现了安全的文件传输。
SCP和CP命令相似,SFTP和FTP的使用方法也类似。SCP和SFTP的共同之处在于使用SSH将文件加密才传输的。SCP和SFTP的不同之处,首先是SCP使用「SCP命令」,SFTP则类似「FTP处理文件」的使用方式,其次SCP比较简单,是轻量级的,SFTP的功能则比较多。
SCP命令:
1.命令格式:
scp [参数] [原路径] [目标路径]
2.命令参数
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
SFTP是一个交互模式命令, 格式是sftp username@remoteIP
. 执行后提示符sftp> 。
1.命令格式:
sftp [参数] [IP或主机名]
2. 命令参数:
-B 指定传输文件时缓冲区的大小
-l 使用ssh协议版本1
-b 指定批处理文件
-C 使用压缩
-o 指定ssh选项
-F 指定ssh配置文件
-R 指定一次可以容忍多少请求数
-v 升高日志等级
3. 交互命令:
get 下载
put 上传
mget 多文件下载
mput 多文件上传
bye/exit/quit 退出该ip
cd 切换服务器目录(远程主机)
lcd 切换本地目录(本地主机)
pwd 显示服务器当前路径(远程主机)
lpwd 显示本地当前路径(本地主机)
mkdir 在远程服务器上创建目录;(远程主机)
lmkdir 在本地系统上创建目录。(本地主机)
ls 显示服务器目录(远程主机)
lls 显示本地目录(本地主机)
help 查看sftp支持哪些命令。
!command 这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的内容
!rm 是删除linux当前目录下的a.txt文件。这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm删除的是sftp服务器上的文件, 而非本地的linux上的文件。
SSH命令:
1.命令格式:
ssh [参数] [远程主机]
2. 命令参数:
-A 开启认证代理连接转发功能
-a 关闭认证代理连接转发功能
-b <IP地址>使用本机指定的地址作为对位连接的源IP地址
-C 请求压缩所有数据
-F <配置文件>指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config”
-f 后台执行ssh指令
-g 允许远程主机连接本机的转发端口
-i <身份文件>指定身份文件(即私钥文件)
-l <登录名>指定连接远程服务器的登录用户名
-N 不执行远程指令
-o <选项>指定配置选项
-p <端口>指定远程服务器上的端口
-q 静默模式,所有的警告和诊断信息被禁止输出
-X 开启X11转发功能
-x 关闭X11转发功能
-y 开启信任X11转发功能
3.命令使用:
1) 从某主机的80端口开启到本地主机2001端口的隧道
ssh -N -L2001:localhost:80 somemachine
2) 比较远程和本地文件
ssh user@host cat /path/to/remotefile | diff /path/to/localfile –
3) 通过SSH挂载目录/文件系统
sshfs name@server:/path/to/folder /path/to/mount/point
4) 创建到目标主机的持久化连接
ssh -MNf <user>@<host>
5) 通过SSH连接屏幕
ssh -t remote_host screen –r
6) 通过SSH运行复杂的远程shell命令
ssh host -l user $(<cmd.txt)
7) 保持SSH会话永久打开
autossh -M50000 -t server.example.com ‘screen -raAd mysession’