理论部分
在现代软件开发中,远程开发已经成为一种非常常见的方式。尤其是在需要部署到云服务器、运行特定环境或者团队协作的场景下,开发者往往需要连接远程主机来进行代码编写、调试和部署。
为了实现这种远程连接并保证数据传输的安全性,我们通常使用 SSH 协议。
1. 什么是 SSH?
SSH 是一种加密的网络协议,主要用于在不安全的网络环境中安全地登录远程服务器、执行命令、传输文件等操作。
SSH 的核心目标包括:
-
保密性(Confidentiality):数据传输过程中会被加密,防止信息被窃听;
-
完整性(Integrity):确保传输的数据没有被篡改;
-
身份验证(Authentication):确保通信双方的身份真实可信。
在技术实现上,SSH 主要依赖于密码学中的三种机制:非对称加密、对称加密和哈希算法。首先,SSH 会在连接开始时使用非对称加密,也就是常说的“公钥”和“私钥”机制,来验证双方身份,并协商一个临时的加密密钥。接着,真正的数据传输过程会使用对称加密,这种加密方式计算效率高、速度快,适合大量数据传输。最后,为了保证传输内容的完整性,还会使用哈希函数来生成“数字指纹”,防止数据被篡改。
2. SSH 的工作机制
一个 SSH 连接大致可分为以下几个步骤:
握手阶段:客户端和服务器交换公钥、协商加密算法;
身份验证阶段:客户端通过密码或密钥认证自己的身份;
建立安全通道:之后的所有通信都通过加密通道进行,确保安全。
“握手阶段”:就像两个陌生人初次见面时,会先自我介绍、互换联系方式,SSH 中的客户端(我们用的电脑)和服务器(远程主机)也会交换一些重要的信息,比如各自的“公钥”(一种能公开分享的加密方式)和支持哪些“加密方式”(就像决定用哪种语言交流)。这个阶段的目的就是让双方确定一个统一的“加密规则”。
“身份验证阶段”:这个阶段就好比你要进某个大楼,保安不认识你,但你出示了门卡或身份证。SSH 中,客户端要证明自己是谁,通常的方式有两种:一种是输入密码(就像刷卡),另一种是使用 SSH 密钥(像高级别的指纹验证),服务器会确认你的身份,决定是否允许你进入。
“建立一条安全通道”:这条通道的作用就像一个只能你和服务器看见的专属密道,无论你之后传什么数据,哪怕是很私密的命令或重要的文件,在这条密道里都被加密包裹着,别人即使拦截了信息,也只能看到一堆乱码,无法破解。
操作部分(Mac环境)
一、环境准备
1.安装VSCode
从官网下载并安装 VSCode.
2.检查 SSH 客户端
Mac 系统自带 OpenSSH 客户端,通过终端执行ssh-v确认是否可用。
出现以上界面则为成功安装。
brew install openssh
若无,可通过 Homebrew 安装
3.远程服务器要求(可以是学校的服务器)
确保服务器已开启 SSH 服务(默认端口 22)
二、安装与配置 Remote-SSH 插件
1.安装插件
打开 VSCode,进入扩展市场(Cmd+Shift+X),搜索 Remote – SSH 并安装
2.SSH连接并登录
点击加号进入连接界面
输入服务器地址和密钥进行连接
选择默认文件即可
连接成功,可以看到服务器的文件列表
三、使用 SCP 命令拷贝文件
SCP是一种通过 SSH 协议进行文件传输的工具,它可以在本地计算机和远程服务器之间安全地传输文件。在开发过程中,使用 SCP 可以方便地将本地文件上传到远程服务器,或者将远程服务器上的文件下载到本地进行编辑。
1. 基本语法
SCP 的基本语法如下:
-
源路径:指要传输的文件或目录路径。
-
目标路径:指文件传输的目标位置,格式通常是 username@hostname:/path。
scp [选项] [源路径] [目标路径]
2. 本地上传到远程服务器
假设你有一个本地文件 file.txt,并且希望将其上传到远程服务器的 /home/username/ 目录下,可以使用以下命令:
scp /path/to/local/file.txt username@remote_server:/home/username/
3. 远程服务器下载到本地
如果你想从远程服务器下载文件到本地,可以使用以下命令:
scp username@remote_server:/path/to/remote/file.txt /path/to/local/
4. 传输整个目录(递归)
若需要上传整个目录(包括子目录和文件),可以使用 -r 选项来递归复制目录:
scp -r /path/to/local/directory username@remote_server:/path/to/remote/
5. 指定 SSH 端口
如果远程服务器的 SSH 服务不使用默认端口(22),你可以通过 -P 选项指定端口号:
scp -P 2222 /path/to/local/file.txt username@remote_server:/path/to/remote/
评论前必须登录!
注册