日常中,经常会用到ssh,以及它的好兄弟sftp,或者它的同分异构体scp,还有同素异形体sshpass等等,原理很简单,命令比较绕,所以这里梳理一下。
SSH
SSH (Secure Shell) 是一种用于远程登录和其他网络服务之间的加密协议,ssh 命令用于通过 SSH 协议连接到远程主机,实现远程登录和执行命令,它加密会话中的所有通信,确保数据传输的安全性。
默认TCP Port 22
ssh [options] [user]@[hostname] [command]
指定端口连接:
ssh -p 2222 user@hostname
SFTP
SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议,与 FTP 协议相比,SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式。
SFTP 是基于 SSH 协议的,所以也是默认TCP Port 22
sftp [options] [user]@[hostname]:[remote_folder]
指定端口连接:
ssh -P 2222 user@hostname
SFTP 解释器中预置了常用的命令,但是没有自带的 Bash 来得丰富。
- 基本指令
① ls, rm, cd, mkdir, pwd 等指令是对当前连接的远程端服务器的操作。
② lls, lrm, lcd, lmkdir, lpwd 等指令是对本地端服务器的操作 —— 在上述指令前加l(local)即可
- put 本地路径 远程路径
把本地端的文件上传到远程端的目录下
- get 本地路径 远程路径
把远程端的文件下载到本地端的目录下
如果上传/下载的是文件夹, 在put/get命令后加上-r参数即可。
- !command
在本地端上执行command这个命令,比较方便
- exit
退出sftp
SCP
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
默认TCP Port 22
对目录操作在scp后面加 -r
1、从本地复制到远程
命令格式:
scp [本地文件] [user]@[hostname]:[remote_folder]
或者
scp [本地文件] [user]@[hostname]:[remote_file]
- 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
2、从远程复制到本地
从远程复制到本地,只要反过来即可
scp [user]@[hostname]:[remote_folder] [本地文件]
或者
scp [user]@[hostname]:[remote_file] [本地文件]