跳过正文
  1. 文章/
  2. 操作系统/
  3. Linux/

3、SSH、SFTP

·1926 字·4 分钟· loading · loading · ·
操作系统 Linux
GradyYoung
作者
GradyYoung
Linux - 点击查看当前系列文章
§ 3、SSH、SFTP 「 当前文章 」

SSH
#

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定,SSH 为建立在应用层和传输层基础上的安全协议。

SSH的优点:

  • 安全连接: SSH对客户端和服务器之间传输的所有数据进行加密,提供一个安全和私人的连接。
  • 远程访问: SSH允许用户从世界任何地方远程访问和控制服务器和设备。
  • 认证: SSH支持多种认证方法,包括密码、公钥加密法和双因素认证。
  • 多功能性: SSH是一个广泛使用的协议,支持各种应用,包括远程外壳访问、文件传输和端口转发。

SSH的劣势:

  • 复杂性: SSH的设置和配置可能很复杂,特别是对于缺乏技术专长的用户。
  • 性能: 由于加密和认证的开销,SSH可能比其他协议,如FTP,要慢一些。
  • 防火墙问题: SSH可能需要特殊的防火墙配置以允许访问远程服务器和设备。

连接SSH
#

Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器,一般远程登陆的方式都是基于SSH,常用的工具有XShellMobaXterm

MobaXterm有免费版本,而且免安装比较方便:https://mobaxterm.mobatek.net/

使用前提
#

1、服务器开启了SSH服务
#

操作系统即使是最小安装ssh默认是已经安装的。默认ssh服务也是开启的。

可以通过命令service sshd status来查看sshd服务是否开启

image-20230915155827749

2、服务器网络没问题
#

查看系统IP:ip addr

image-20210810121540002

发现第二个网卡ens33并没有分配IP

使用命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33,进入配置文件进行修改ONBOOT为yes,表示服务启动时自动执行该文件,:wq保存退出

image-20210810134034965

重启网络服务,命令:service network restart

重启完之后,再次查看IP地址,命令:ip addr,发现网卡ens33已经有了局域网IP

image-20210810134413047

第三方工具连接
#

image-20210810134509018

image-20210810134525843

image-20210810134718344

image-20210810134750523

连接成功

image-20210810134813026

SSH命令行连接
#

一般情况下,Windows、Mac、Linux操作系统都内置了ssh命令

可以使用如下命令来连接目标服务器,如果端口是默认22,则不需要指定端口-p

ssh -p [port] [username]@[ip]

修改SSH服务端口号
#

1、编辑 SSH 配置文件:vi /etc/ssh/sshd_config

2、找到#Port 22、去掉注释并修改

3、重启SSH服务:service sshd restart

4、配置防火墙,允许新端口访问

SFTP
#

这是一个建立在SSH之上的协议,以一种安全的方式有效地传输文件。通过使用该协议,它可以很容易地通过互联网连接安全地移动大量数据。它利用了SSH,使信息交换具有更高的保护水平。

SFTP的优点:

  • 安全性: SFTP对客户端和服务器之间传输的所有数据进行加密,提供一个安全和私密的连接。
  • 认证: SFTP支持多种认证方法,包括密码和公钥加密法。
  • 简单性: SFTP比SSH更容易设置和配置,特别是对于缺乏技术专长的用户。
  • 文件管理: SFTP提供文件管理功能,包括在远程服务器上重命名、删除和移动文件的能力。

SFTP的缺点:

  • 支持有限: 并非所有的虚拟主机供应商都支持SFTP,而且在某些设备上可能无法使用。
  • 速度较慢: 由于加密和认证的开销,SFTP的速度可能比其他协议,如FTP,要慢。
  • 功能有限: SFTP的功能比其他文件传输协议(如FTP)少,可能不适合所有的使用情况。

连接SFTP
#

由于SFTP是建立在SSH之上的,所以使用前提和SSH一样,端口也是使用SSH的端口。一般情况下,我们使用第三方工具例如XShell、MobaXterm都已经内置了SFTP的功能。

但是某些特殊情况下,可能无法安装使用第三方工具,那么就需要使用sftp命令,这个命令在Windows、Mac、Linux一般都是默认内置的。

#如果连接地址存在 path 并且 path 不是一个目录,那么 SFTP 会直接从服务器端取回这个文件。
#-B: buffer_size,指定传输 buffer 的大小,更大的 buffer 会消耗更多的内存,默认为 32768 bytes;
#-P: port,指定连接的SSH端口号,默认为 22;
#-R: num_requests,指定一次连接的请求数,可以略微提升传输速度,但是会增加内存的使用量。
sftp -P [port] [user_name]@[ip][:path]

#例如
C:\Users\yhgh>sftp -P 22 root@192.168.253.143:/home/
root@192.168.253.143's password:
Connected to 192.168.253.143.
Changing to: /home/
sftp>

连接后,我们会进入sftp的解释器,可以使用help命令查看可用命令

bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp [-h] grp path                Change group of file 'path' to 'grp'
chmod [-h] mode path               Change permissions of file 'path' to 'mode'
chown [-h] own path                Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-afpR] remote [local]         Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-afpR] local [remote]         Upload file
pwd                                Display remote working directory
quit                               Quit sftp
reget [-fpR] remote [local]        Resume download file
rename oldpath newpath             Rename remote file
reput [-fpR] local [remote]        Resume upload file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

下载
#

#文件
sftp> get remotePath [localPath]
#目录
sftp> get -r remotePath [localPath]

上传
#

#文件
sftp> put [localPath] remotePath
#目录
sftp> put -r [localPath] remotePath

删除
#

#文件
sftp> rm path
#目录
sftp> rmdir path 
Linux - 点击查看当前系列文章
§ 3、SSH、SFTP 「 当前文章 」