SSH基础

SSH基础

Jan.08, 2019

1. 简介

什么是SSH?

"Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境." - Secure Shell

SSH,字面意思是安全的shell,但SSH并不是一种shell,只是创建了一个通道在远程服务器上运行 shell。SSH是客户端/服务器的体系结构。一般来说,它具有下面几种特点:

  • 身份验证
  • 加密性
  • 完整性

SSH实际上并不是一种完全安全的解决方案,但是目前为止似乎也还没有完全安全的解决方案。

SSH的用途

SSH可以有很多用途,一般我们经常用来:

  • 远程登录
  • 文件传输
  • X11连接
  • 端口转发

"SSH的经典用途是登录到远程电脑中执行命令。除此之外,SSH也支持隧道协议、端口映射和X11连接。借助SFTP或SCP协议还可以传输文件。" - Secure Shell

常见的术语

使用SSH时可能遇到一些名词,为避免混淆,简单介绍一下:

  • SSH: 通用的术语,泛指SSH协议或者相关软件。
  • SSH-1: SSH协议版本1。
  • SSH-2: SSH协议版本2。
  • SSH1: SSH设计者Tatu Ylönen最初实现的软件,基于SHH-1协议。(Tatu Ylönen后面成立了SSH Communications Security Corp.)
  • SSH2: SSH Communications Security Corp.的SSH产品,基于SSH-2协议。
  • Open SSH: SSH协议的开源实现版本,是OpenBSD项目的产品。 1、2 协议均有实现。OpenSSH是最流行的SSH实现,是大量操作系统的默认组件。
  • SFTP: SSH文件传输协议。
  • SCP: 安全复制,基于SSH协议进行的文件传输。
  • ssh(全部小写): 远程登录的命令, 类似的还有sftp, scp, sshfs等。

2. SSH客户端基本用法

SSH远程登录

SSH远程登录,通常使用客户端程序进行登录,一般只需要填写账户,密码和端口等。SSH客户端程序有很多,比如MobaXterm, PuTTY, Xshell等。常用SSH客户端的比较可以参考:

除了客户端程序,Linux和Unix系统等操作系统是默认安装OpenSSH程序的,可以使用命令行直接登录(实际上,通过配置文件,使用命令行会更便捷)。

# 命令行登录
$ ssh user@host  # 登录主机

# 例子: 用户tux通过ssh登录111.111.111.1服务器,端口为1111
$ ssh tux@111.111.111.1 -p 1111

# 常见的参数(参数顺序不影响)
-p  # 端口号,如果端口号为默认端口(22),则不用添加,(p为小写)
-i  # 密钥文件(如果登录方式为密钥登录)
-X  # 使用X11 
-l  # 用户名,可以用@方式省略,现在很少用
基于SSH的文件传输

基于SSH协议的文件传输主要有两种: SFTPSCP

SFTP

"SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连线,提供文件访问、传输和管理功能的网上传输协议。" - SSH文件传输协议

SCP

"安全复制(英语:Secure copy,缩写SCP)是指在本地主机与远程主机或者两台远程主机之间基于Secure Shell(SSH)协议安全地传输电脑文件。[1]“SCP”通常指安全复制协议或者程序本身。" - 安全复制

很多SSH客户端程序远程登录时默认建立了SFTP连接,不需要另外连接。SCP文件传输通常需要其他的客户端,连接方式与SSH基本一致: 账户,密码和端口等。

SFTP与SCP的命令行文件传输方法有些差别,SCP功能比较单一,基本只能用来文件传输,而SFTP的功能较多。

SFTP命令行用法

# 最常见的用法
$ sftp user@host -P xxxx  # 建立SFTP连接

# 常见参数(有文件路径时,这些参数需要放在文件路径之前)
-P  # 端口号, 如果端口号为默认端口(22),则不用添加,(P为大写)
-i  # 密钥文件(如果登录方式为密钥登录)

# 直接利用sftp下载文件(这种用法目前用的比较少了)
$ sftp user@host:/remote/path/file  # 从远程服务器复制文件到本地

# 建立sftp连接后,最常用的两个命令
get  # 从远程服务器文件下载至本地
put  # 把本地文件上传至远程服务器
# 具体用法,文件夹路径前加上: -r
get /remote/path/sourcefile /local/targetpath/
put /local/path/sourcefile /remote/targetpath/

# 建立sftp连接后,还有很多其他命令可以使用,类似shell
bye  # 结束连接, exit也可以
ls, cd, pwd, mkdir, rmdir, delete等 # 针对远程服务器的操作
lls,lcd等  # 针对本地的操作,功能与ls, cd同

SCP命令行用法

$ scp /local/path/sourcefile user@host:/remote/targetpath/  # 复制文件到主机
$ scp user@host:/remote/path/sourcefile /local/targetpath/  # 从主机复制文件

# 常见参数(注意,这些参数需要放在文件路径之前)
-P  # 端口号, 如果端口号为默认端口(22),则不用添加,(P为大写)
-i  # 密钥文件(如果登录方式为密钥登录)
-r  # 文件夹
SFTP与SCP比较
协议速度安全功能大文件传输断点续传其他
SFTP较安全较多支持支持
SCP较安全单一支持不支持




参考资料

转载于:https://www.cnblogs.com/laocaibcc/p/10241137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值