End

SSH 教程-2 密钥登录 证书登录 端口转发

博文地址


目录

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 中用于文件同步的应用程序,它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件。它也可以当作文件复制工具,替代cpmv命令。

名称里面的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:显示帮助信息
  • byequitexit:退出 sftp

2021-12-12

posted @ 2021-12-12 20:38  白乾涛  阅读(1154)  评论(1编辑  收藏  举报