我的GitHub | 我的博客 | 我的微信 | 我的邮箱 |
---|---|---|---|
baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
目录
SSH 教程 -2
本文改编自 网道的 SSH 教程,主要为了精简大量本人不感兴趣的内容。
本教程约定,大写的 SSH 表示协议,小写的 ssh 表示客户端软件。
SSH 密钥登录
SSH 默认采用密码登录,密钥登录
是比密码登录更好的方案。
密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。
SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥
必须私密保存,不能泄漏;公钥
则是公开的,可以对外发送。公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。
如果数据使用公钥加密,那么只有使用对应的私钥才能解密;同样,如果使用私钥加密(这个过程一般称为签名
),也只有使用对应的公钥才能解密。
密钥登录的过程
SSH 密钥登录分为以下的步骤。
- 第一步,手动将
客户端的公钥
放入远程服务器的指定位置 - 第二步,客户端向服务器发起 SSH 登录的请求
- 第三步,服务器收到用户 SSH 登录的请求,发送一些
随机数据
给用户,要求用户证明自己的身份 - 第四步,客户端收到服务器发来的数据,使用客户端的私钥对随机数据进行加密 -- 即签名,然后再发给服务器
- 第五步,服务器收到客户端发来的加密签名后,使用客户端的公钥解密,然后跟原始数据比较,如果一致,就允许用户登录
使用 ssh-keygen 生成密钥
OpenSSH 提供的ssh-keygen
命令,可以用来生成密钥。
cd ~/.ssh # 定位到 C:\Users\白乾涛\.ssh 目录,没有时可以手动创建
ssh-keygen # 生成密钥,不指定加密算法时默认使用 RSA 算法
ssh-keygen -t dsa # 指定密钥的加密算法,一般选择 DSA 算法或 RSA 算法
ssh-keygen -C xx@yy # 指定注释,不指定时默认使用当前的用户名和主机名作为注释
使用案例
ssh-keygen -t rsa -C baiqiantao@sina.com
# 会让你确认文件名和密码(passphrase),一般不需要输入,连输三个回车就行
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/白乾涛/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
# 提示生成的密钥保存的位置
Your identification has been saved in /c/Users/白乾涛/.ssh/id_rsa
Your public key has been saved in /c/Users/白乾涛/.ssh/id_rsa.pub
# 打印公钥的指纹、注释等信息
The key fingerprint is:
SHA256:0OhBsziHgIT6kY8gZzleNJ4gZc1C8IjCTOjs+ajDE7k baiqiantao@sina.com
公钥文件的内容类似下面这样。
ssh-rsa AAAAB3NzaC1yc......Bw49gnT80U= baiqiantao@sina.com
# 注意,公钥只有一行。末尾的 baiqiantao@sina.com 是公钥的注释,不是必需项。
命令的配置项
-b
:bits,指定密钥的二进制位数-C
:comment,为密钥文件指定新的注释,格式为username@host
。-f
:file,指定生成的私钥文件-t
:指定生成密钥的加密算法,dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
-N
:new,在创建时指定私钥的密码-p
:passphrase,在创建后重新指定私钥的密码-F
:find,检查某个主机名是否在known_hosts
文件里面-R
:remove,将指定的主机公钥指纹移出known_hosts
文件
ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile] [-m format] [-N new_passphrase] [-O option] [-t rsa] [-w provider]
ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase] [-P old_passphrase]
ssh-keygen -i [-f input_keyfile] [-m key_format]
ssh-keygen -e [-f input_keyfile] [-m key_format]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-lv] [-f known_hosts_file]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -K [-a rounds] [-w provider]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-g] [-f input_keyfile]
ssh-keygen -M generate [-O option] output_file
ssh-keygen -M screen [-f input_file] [-O option] output_file
ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider][-n principals] [-O option] [-V validity_interval] [-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A [-a rounds] [-f prefix_path]
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ...
ssh-keygen -Q [-l] -f krl_file [file ...]
ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
ssh-keygen -Y check-novalidate -n namespace -s signature_file
ssh-keygen -Y sign -f key_file -n namespace file ...
ssh-keygen -Y verify -f allowed_signers_file -I signer_identity -n namespace -s signature_file [-r revocation_file]
上传公钥
生成密钥以后,公钥必须上传到服务器,才能使用公钥登录。
手动上传公钥到服务器
OpenSSH 规定,用户的公钥需要添加到服务器上该用户主目录的~/.ssh/authorized_keys
文件中,每个公钥占一行。用户可以手动创建、编辑该文件。
cat ~/.ssh/authorized_keys # 查看
touch ~/.ssh/authorized_keys # 创建
vim ~/.ssh/authorized_keys # 编辑
公钥上传到服务器后,下次登录时,OpenSSH 就会自动采用密钥登录
,不再提示输入密码。
使用 ssh-copy-id 上传公钥
通过 OpenSSH 提供的ssh-copy-id
命令,可以自动将公钥拷贝到远程服务器的~/.ssh/authorized_keys
文件。如果文件不存在,会自动创建该文件。
用户在本地计算机执行下面的命令,就可以把本地的公钥拷贝到服务器。
ssh-copy-id -i xx user@host
# 把公钥 xx 拷贝到服务器 host 下 user 用户的 ~/.ssh/authorized_keys 中
# 参数 -i 用来指定公钥文件,公钥文件可以不指定路径和后缀名,会自动在 ~/.ssh 目录里面寻找
# user 是所要登录的账户名,省略时默认使用当前的本机用户名;host 是服务器地址
执行 ssh-copy-id 命令时,会采用密码登录,系统会提示输入远程服务器的密码
注意,
ssh-copy-id
命令是直接将公钥添加到authorized_keys
文件的末尾,所以请务必保证authorized_keys
文件的末尾是一个换行符,否则会导致两个公钥连在一起,使得它们都无法生效。
手动配置公钥到 GitHub
- 复制文件
id_rsa.pub
里面的内容 - 依次进入
Github -> Settings -> SSH and GPG keys -> New SSH key
- 在
Title
处填入任意的标识,在Key
部分里面添加刚才复制的id_rsa.pub
文件里的内容,点击添加即可
ssh -T git@github.com # 验证是否添加成功
Hi baiqiantao! You've successfully authenticated, but GitHub does not provide shell access.
实战:通过 SSH 登录 WSL
我的 wsl 登录密码为:
123
环境准备
wsl # 启动后显示的 bqt@BQT-X 代表 user@host,$ 代表普通用户,# 代表 root 用户
uname -a # 显示电脑以及操作系统的相关信息【Linux BQT-X 4.19.128... GNU/Linux】
cd ~ # 进入用户主目录【/home/bqt】,其他命令【echo ~】【whoami】【pwd】【ll】
ifconfig # 查看服务端的 ip,此 ip 即服务器的 host,例如【inet 172.26.238.88】
ssh -V # 显示 ssh 版本【OpenSSH_8.2p1...】,没安装时会提示你安装
sudo apt install openssh-client # 在 Ubuntu 和 Debian 上安装 ssh 客户端
sudo apt install openssh-server # 在 Ubuntu 和 Debian 上安装 ssh 服务端
sudo service ssh restart/start/stop # 重启/启动/停止 sshd 服务
ps -e |grep ssh # 服务启动的话会看到 sshd
服务端配置
# 启动服务时如果提示 sshd: no hostkeys available,说明还没为服务器 host 生成密钥
sudo chmod 777 /etc/ssh/ # 修改权限,否则生成的密钥无法保存
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # 生成服务器的 rsa 密钥,注意存放位置
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key # 生成服务器的 dsa 密钥,注意存放位置
# 即使将客户端的公钥上传到了服务器,服务端 sshd 配置文件中的一些配置项,也可能会导致密钥登录失败
cat /etc/ssh/sshd_config # 查看服务端 sshd 的配置,可使用【|grep】过滤
sudo chmod 777 /etc/ssh/sshd_config # 修改权限
vim /etc/ssh/sshd_config # 修改配置
cat /etc/ssh/sshd_config |grep PasswordAuthentication # 修改为 no,启用密码登录
cat /etc/ssh/sshd_config |grep StrictModes # 修改为 no,禁用严格模式
sudo service ssh restart # 必须重启 sshd 才能生效
上传公钥
ssh bqt@172.26.238.88 # 未上传公钥前会要求输入密码
ssh-copy-id -i id_rsa bqt@172.26.238.88 # 上传公钥,上传后不需要密码就可以直接登录
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
bqt@172.26.238.88 ’s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh bqt@172.26.238.88"
and check to make sure that only the key(s) you wanted were added.
注意,有些版本的 ssh-copy-id 命令会导致上传失败,详见 ssh-copy-id fails due to shell incompatibility
SSH 证书登录
SSH 是服务器登录工具,一般情况下都采用密码登录
或密钥登录
,这两种方式都有各自的缺点。
- 密码登录需要输入
服务器密码
,这非常麻烦,也不安全,存在被暴力破解的风险。 - 密钥登录需要
服务器保存用户的公钥
,也需要用户保存服务器公钥的指纹
。这对于多用户、多服务器的大型机构很不方便,例如如果有员工离职,需要将他的公钥从每台服务器删除。
什么是证书登录
证书登录就是为了解决上面的缺点而设计的。它引入了一个证书颁发机构(Certificate Authority,简称 CA),对信任的服务器颁发服务器证书
,对信任的用户颁发用户证书
。
登录时,用户和服务器不需要提前知道彼此的公钥,只需要交换各自的证书
,验证是否可信即可。
证书登录的主要优点有两个:
- 用户和服务器
不用交换公钥
,这更容易管理,也具有更好的可扩展性 - 证书可以设置
到期时间
,而公钥没有到期时间,可以进一步提高安全性
证书登录的流程
SSH 证书登录之前,如果还没有证书,需要生成证书。具体方法是:
- 用户将自己的
公钥
发给 CA,CA 使用用户的公钥,生成用户证书
,发给用户 - 服务器将自己的
公钥
发给 CA,CA 使用服务器公钥,生成服务器证书
,发给服务器
有了证书以后,用户就可以登录服务器了。整个过程都是 SSH 自动处理,用户无感知。
- 第一步,用户登录服务器时,SSH 自动将
用户证书
发给服务器 - 第二步,服务器检查
用户证书
是否有效,以及是否由可信的 CA 颁发。证实以后,服务器就可以信任用户 - 第三步,SSH 自动将
服务器证书
发给用户 - 第四步,用户检查
服务器证书
是否有效,以及是否由信任的 CA 颁发。证实以后,用户就可以信任服务器 - 第五步,双方建立连接,用户成功登录服务器
使用 CA 签发证书
生成 CA 密钥
证书登录的前提是,必须有一个 CA,而 CA 本质上就是一对密钥,跟其他密钥没有不同,CA 就用这对密钥去签发证书。
虽然 CA 可以用同一对密钥
签发用户证书和服务器证书,但是出于安全性和灵活性,CA 一般需要两对密钥
,一对用来签发用户证书,另一对用来签发服务器证书。
ssh-keygen -t rsa -f ~/.ssh/user_ca -C user_ca # 生成 CA 签发用户证书的密钥
ssh-keygen -t rsa -f ~/.ssh/host_ca -C host_ca # 生成 CA 签发服务器证书的密钥
签发服务器证书
CA 签发服务器证书时,需要 CA 的密钥
以及服务器的公钥
。
一般来说,SSH 服务器安装时,已经生成密钥/etc/ssh/ssh_host_rsa_key
了,如果没有的话,可用下面的命令生成。
sudo chmod 777 /etc/ssh/ # 可能需要修改权限,否则生成的密钥无法保存
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # 生成服务器的 rsa 密钥,注意存放位置
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key # 生成服务器的 dsa 密钥,注意存放位置
将服务器公钥ssh_host_rsa_key.pub
上传到 CA 服务器后,就可以使用 CA 的密钥host_ca
为服务器的公钥ssh_host_rsa_key.pub
签发服务器证书。
ssh-keygen -s host_ca -I xxx -h -n yyy -V +52w ssh_host_rsa_key.pub # 生成服务器证书
ssh-keygen -L -f ssh_host_rsa_key-cert.pub # 查看证书信息
-s
:signature,指定 CA 签发服务器证书的密钥-I
:identity,身份字符串,可以随便设置,用于方便区分证书,将来可以使用这个字符串撤销证书-h
:host,指定该证书是服务器证书,而不是用户证书-n
:name,指定服务器的域名
,表示证书仅对该域名有效- 如果有多个域名,则使用逗号分隔
- 用户登录该域名服务器时,SSH 通过这个值,分辨应该使用哪张证书发给用户,用来证明服务器的可信性
-V
:validity,指定证书的有效期,+52w
表示为52周(即一年),+1d
表示为1天。证书默认永远有效ssh_host_rsa_key.pub
:服务器的公钥
ssh-keygen -s host_ca -I host_ca_bqt -h -n 172.26.238.88 -V +52w ssh_host_rsa_key.pub
Signed host key ssh_host_rsa_key-cert.pub: id "host_ca_bqt" serial 0 for 172.26.238.88
valid from 2021-12-12T00:38:00 to 2022-12-11T00:39:18
签发用户证书
和签发服务器证书类似,将用户公钥user_key.pub
上传到 CA 服务器后,就可以使用 CA 的密钥user_ca
为用户的公钥user_key.pub
签发用户证书。
ssh-keygen -s user_ca -I user_ca_bqt -n bqt -V +52w user_key.pub # 和签发服务器证书相比,少了一个【-h】
Signed user key user_key-cert.pub: id "user_ca_bqt" serial 0 for bqt
valid from 2021-12-12T00:45:00 to 2022-12-11T00:46:01
-n
:name,指定用户名
,表示证书仅对该用户名有效- 如果有多个用户名,使用逗号分隔
- 用户以该用户名登录服务器时,SSH 通过这个值,分辨应该使用哪张证书,证明自己的身份,发给服务器
user_key.pub
:用户的公钥
安装证书
服务器安装证书
scp ssh_host_rsa_key-cert.pub bqt@172.26.238.88:/etc/ssh/ # 将生成的服务器证书,拷贝到服务器
然后,修改服务器配置文件/etc/ssh/sshd_config
,设置服务器使用的证书为ssh_host_rsa_key-cert.pub
。
cat /etc/ssh/sshd_config |grep HostCertificate # 查看服务器当前使用的证书
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub # 修改服务器使用的证书
sudo service ssh restart # 必须重启 sshd 才能生效
服务器安装 CA 公钥
为了让服务器信任用户证书
,必须将 CA 签发用户证书的公钥 拷贝到服务器的/etc/ssh
目录。
scp user_ca.pub bqt@172.26.238.88:/etc/ssh/ # 将签发用户证书的公钥,拷贝到服务器
然后,修改服务器配置文件/etc/ssh/sshd_config
,设置服务器信任此签发用户证书的公钥user_ca.pub
。设置后,所有登录服务器的账户,都会信任user_ca.pub
签发的用户证书。
cat /etc/ssh/sshd_config |grep TrustedUserCAKeys # 查看服务器当前信任的,签发用户证书的公钥
TrustedUserCAKeys /etc/ssh/user_ca.pub # 设置服务器信任 user_ca 签发的用户证书
sudo service ssh restart # 必须重启 sshd 才能生效
另一种做法
另一种做法是将user_ca.pub
加到服务器某个账户的~/.ssh/authorized_keys
文件,只让该账户信任user_ca
签发的用户证书。具体方法是打开~/.ssh/authorized_keys
,追加一行,开头是@cert-authority principals="..."
,然后后面加上user_ca.pub
的内容,大概是下面这个样子。
@cert-authority principals="user" ssh-rsa AAAAB3Nz...XNRM1EX2gQ==
# 代码中 "user" 指的是用户登录的服务器账户名,一般就是 authorized_keys 文件所在的账户
客户端安装证书
客户端安装用户证书很简单,就是将 CA 生成的用户证书user_key-cert.pub
复制到客户端,与用户的密钥user_key
保存在同一个目录即可。
客户端安装 CA 公钥
为了让客户端信任服务器证书
,必须将 CA 签发服务器证书的公钥 拷贝到客户端。
- 用户级别配置文件:
~/.ssh/known_hosts
- 全局级别配置文件:
/etc/ssh/ssh_known_hosts
具体做法是,打开配置文件,追加一行,开头为@cert-authority *.example.com
,然后将签发服务器证书的公钥host_ca.pub
的内容粘贴在后面。
@cert-authority 172.26.238.88 ssh-rsa AAAAB3NzaC1yc......DCKhor3AOb0= host_ca
上面的*.example.com
是域名的模式匹配,表示只要服务器符合该模式的域名,且签发服务器证书的 CA 匹配后面给出的公钥,就都可以信任
- 如果没有域名限制,这里可以写成
*
- 如果有多个域名模式,可以使用逗号分隔
- 如果服务器没有域名,可以用主机名或者 IP 地址
使用证书登录远程服务器
ssh bqt@172.26.238.88 # 使用默认的密钥 id_rsa 与证书 id_rsa-cert.pub 登录服务器
ssh -i user_key bqt@172.26.238.88 # 使用指定的密钥 user_key 与证书 user_key-cert.pub 登录服务器
废除证书
废除证书的操作,分成用户证书的废除和服务器证书的废除两种。
服务器证书的废除,只需用户在客户端known_hosts
文件里面,删除对应的@cert-authority
命令的那一行即可。
用户证书的废除,需要
- 在服务器通过命令新建一个
/etc/ssh/revoked_keys
文件,文件中保存的是不再信任的用户公钥 - 在服务器配置文件
sshd_config
中,将配置项RevokedKeys
的值设置为此文件
ssh-keygen -k -f /etc/ssh/revoked_keys -z 1 ~/.ssh/user1_key.pub # 将不再信任的用户公钥保存在第1行
ssh-keygen -k -f -u /etc/ssh/revoked_keys -z 2 ~/.ssh/user2_key.pub # 将不再信任的用户公钥保存在第2行
RevokedKeys /etc/ssh/revoked_keys # 让服务器知晓不再信任的用户公钥
SSH 端口转发
SSH 除了登录服务器,还有一大用途,就是作为加密通信的中介,充当两台服务器之间的通信加密跳板,使得原本不加密的通信变成加密通信。这个功能称为端口转发(port forwarding),又称 SSH 隧道(tunnel)。
端口转发有两个主要作用:
- 将不加密的数据放在 SSH 安全连接里面传输,使得原本不安全的网络服务增加了安全性,比如通过端口转发访问 Telnet、FTP 等明文服务,数据传输就都会加密
- 作为数据通信的加密跳板,绕过网络防火墙
端口转发有三种使用方法:动态转发,本地转发,远程转发。
这一块的内容非常重要,这里就先不写了,后面会专门学习总结。
其他相关命令
安全拷贝命令:scp
scp
是 SSH 提供的一个客户端程序,用来在两台主机之间加密传送文件。使用scp
传输数据时,文件和密码都是加密的,不会泄漏敏感信息。
scp
是 secure copy 的缩写,它的底层是 SSH 协议,默认端口是22,相当于先使用ssh
命令登录远程主机,然后在加密连接之中复制文件。客户端发起连接后,会提示用户输入密码。如果是在两个远程系统之间复制,系统将提示你输入两个远程帐户的密码。
使用案例
scp fromFile user@host:toFile # 将本机当前目录的 fromFile 复制到远程主机用户主目录下的 toFile
scp user@host:fromFile toFile # 如果目标位置已存在同名文件,则会在不提示的情况下直接覆盖
scp from1 from2 user@host:toDir # 支持一次复制多个文件
scp user_ca.pub bqt@172.26.238.88:/etc/ssh/ # 将签发用户证书的公钥,拷贝到服务器
# 用户名的默认值是本机的当前用户名,主机名默认为当前主机,也可以使用配置文件中定义的主机别名
scp sourceFile remote_username@server_ip:/remoteTargetFile # 复制本地文件到远程主机
scp -r sourceDir remote_username@server_ip:/remoteTargetDir # 复制本地整个目录到远程主机
scp remote_username@server_ip:/remoteSourceFile targetFile # 复制远程主机文件到本地
scp -r remote_username@server_ip:/remoteSourceDir targetDir # 复制远程主机整个目录到本地
scp userA@hostA:dir/SourceFile userB@hostB:dire/SourceFile # 从远程主机 A 拷贝到远程主机 B
配置项
-c
:使用指定的加密算法-F
:使用指定的配置文件,默认为.ssh/config
,连接时可以使用配置文件中定义的主机别名等配置-i
:使用指定的密钥-P
:指定远程主机的 SSH 端口,默认端口为 22-l
:限制传输数据的带宽速率,单位是Kbit/sec
-C
:无参数,在传输时压缩文件-p
:无参数,保留 modification time、access time、mode 等原始文件的信息-q
:无参数,关闭显示拷贝的进度条-r
:无参数,以递归方式复制目录-v
:无参数,显示详细的输出
文件同步命令:rsync
rsync 是 Linux 中用于文件同步的应用程序,它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件。它也可以当作文件复制工具,替代cp
和mv
命令。
名称里面的r
指的是 remote,rsync 其实就是 remote sync
的意思。与文件传输工具 FTP 或 scp 相比,rsync 最大的特点是,会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。
rsync 并不是 SSH 工具集的一部分。
sudo apt-get install rsync # 传输的双方都必须安装 rsync
rsync -r source destination # 将源目录拷贝到目标目录,参数 -r 表示递归,即包含子目录
rsync -r s1 s2 destination # 可以同时拷贝多个文件或目录。目标目录如果不存在,会自动创建
rsync -a source destination # 参数 -a 表示除了递归同步以外,还同步元信息,比如修改时间、权限等
rsync -a source/ destination # 以斜杠结尾表示只同步内容,而不会在 destination 下面创建 source 子目录
rsync -anv source/ dest # -n 表示是模拟命令执行的结果,而并不真的执行命令;-v 是将结果输出到终端
rsync -av --delete sou/ dest # --delete 表示将目标目录成为源目录的一个镜像,会删除源目录中不存在的文件
安全文件传输命令: sftp
sftp
是 SSH 提供的一个客户端应用程序,主要用来安全地访问 FTP。sftp
就相当于将 FTP(File Transfer Protocol) 放入了 SSH。
sftp username@hostname # 连接 FTP 主机,连接时会要求输入 FTP 的密码
# 密码验证成功以后,就会出现 FTP 的提示符【sftp>】,下面就可以输入各种 FTP 命令了
ls [directory]
:列出远程目录的内容cd directory
:改到指定的远程目录mkdir directory
:创建一个远程目录rmdir path
:删除一个远程目录put localfile [remotefile]
:将本地文件推送(put)到远程主机get remotefile [localfile]
:将远程主机文件拉取(get)到本地help
:显示帮助信息bye
或quit
或exit
:退出 sftp
2021-12-12