项目协同开发-配置SSH
如果你是GitHub/Gitee的个人开发者用户,你一定用过Git clone。当然,你可能见过SSH clone,但不一定常用到。但如果你是一个算法工程师,或是已经参加一些大型项目,需要频繁登录远程服务器,那你一定曾为输入密码而苦恼——为了确保服务器的安全,每次登录服务器都需要手动输入密码。这时候,就需要SSH的帮助了。
漫漫开发长路,恭喜你,了解SSH,这是你从象牙塔走入实际开发的第一步。
什么是SSH?
庞大的互联网如同一个黑暗森林,里面有无数虎视眈眈的坏人盯着你的服务器/数据。为了保护自己的宝贵财产,你需要一个强大的安全机制,在防止外人随意进出你的服务器的同时,又能让你信任的人可以不那么费劲的进来。这个安全机制就是SSH(Secure Shell)。
SSH允许两台电脑之间通过安全连接进行数据交换,并通过加密来保证数据的保密性和完整性。它最常用的场景是远程登录和文件传输。现在你可能可以理解GitHub中提供的两种clone方式:Git clone是任何人都可以使用的克隆指令,但SSH clone只有项目拥有者才能使用,因为需要添加SSH Key。
什么是SSH Key?
SSH通过公钥和私钥来进行加密。Github上,我们把公钥保存在服务器上,这样我们需要克隆文件的时候,文件会被公钥加密。当我们将代码拉到本地时,使用私钥进行解密。
使用SSH进行免密登录
前面提到SSH最常用在远程登录和文件传输,这也是算法工程师在远程服务器训练时必备的登录方式。通过密钥认证,就不需要每次手动输入密码。
它的原理是将客户端和服务器交换密钥,当发起登录请求时,双方动态生成一个会话的密钥和会话的ID,建立一个加密通道。远程服务器使用公钥加密一个随机数,发送至本地客户端。客户端使用自己的私钥进行解密后,再用保存的服务器的公钥加密后发回服务器。服务端接到信息后再用服务端私钥解密,如果解密的随机数与自己发送的随机数相同,则验证通过。
这个过程像是乒乓球一样你来我往。
在GitHub中配置SSH
要实现在GitHub中配置SSH,需要现在本地创建公钥-私钥对:
在命令行中输入
1 |
|
随后需要进行三次回车
可以看到密钥被保存在/.ssh/路径下
我们输入
1 |
|
就可以查看rsa密钥,也就是公钥。接下来我们就可以复制这个密钥,将它添加到代码仓库中。OK,大功告成!
使用VSCode配置SSH免密登录
首先需要安装Remote-SSH插件
点击左下角绿色箭头==>Connect to Host==>Add New SSH Host
需要将本地的密钥发送到远程服务器。以autodl的服务器为例:如
connect.southb.gpuhub.com
,端口号: 29967 账户:root
在Git Bash输入
1 |
|
这将会把本地公钥发送至服务器。
- 确认之后需要输入服务器密码,输入的时候不会显示密码
- 在VSCode-
远程资源管理器
-SSH
-新建远程
输入ssh -p 29967 root@connect.southb.gpuhub.com
并回车,服务器配置将被保存在VSCode的配置文件。 - 现在刷新一下,你就可以在远程资源管理器中见到这个服务器了。未来登陆时也不再需要重复输入密码。
配置SSH端口映射
有的时候在服务器上部署服务时,想要在本地调用服务,那就需要进行端口映射了。我们以ssh -p 46206 root@connect.westb.seetacloud.com
为例,如果设置的服务器端口是8501,只需要在命令行中输入以下代码,即可将服务器的端口映射到本地的8501端口。此时运行localhost:8501即可启动服务。
1 |
|
2023/12/28 于苏州家中