网络问题,下载很快,上传很慢,甚至不能上传过大或过多的文件到服务

2024-06-12  本文已影响0人  JIAWEIJIAWEI

网络问题,下载很快,上传很慢,甚至不能上传过大(压缩包)或过多的文件到服务器时的临时替补方法

本地windows,远程服务器Linux

一、方法:逐个文件用scp命令上传,且避免每次都要输入密码
1、设置 SSH 密钥认证:
在本地机器生成 SSH 密钥对(如果还没有生成), 打开 PowerShell 或 CMD 并运行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

按提示操作(一路回车即可),生成 C:\Users\YourUsername.ssh\id_rsa 和 id_rsa.pub 文件。

2、查看生成的公钥:

使用记事本或其他文本编辑器打开 id_rsa.pub 文件,复制其内容。

3、将公钥添加到远程服务器:
使用 SSH 登录到远程服务器:

ssh username@server

username:用户名
server:IP地址
在服务器上,编辑(或创建) ~/.ssh/authorized_keys 文件:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

将第2步复制的公钥内容粘贴到 authorized_keys 文件中,然后保存并退出编辑器。

4、设置合适的权限:
在服务器上,设置 ~/.ssh 和 authorized_keys 的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5、确保 SSH 密钥认证设置正确
测试无密码登录:确保可以通过以下命令无密码登录远程服务器:

ssh username@server

6、本地新建一个upload_files.bat文件,记事本打开后编辑内容如下:

@echo off
setlocal

REM 本地文件夹路径
set "LOCAL_DIR=C:\path\to\local\folder"

REM 远程服务器信息
set "REMOTE_USER=username"
set "REMOTE_HOST=server"
set "REMOTE_DIR=/path/to/remote/folder"

REM 创建远程目录(如果不存在)
echo Creating remote directory %REMOTE_DIR% if it does not exist
ssh %REMOTE_USER%@%REMOTE_HOST% "mkdir -p %REMOTE_DIR%"

REM 遍历本地文件夹中的所有文件并上传
for %%F in ("%LOCAL_DIR%\*") do (
    if exist "%%F" (
        set "FILENAME=%%~nxF"
        echo Checking if %FILENAME% exists on %REMOTE_HOST%:%REMOTE_DIR%
        
        REM 检测远程服务器目录中是否存在该文件
        ssh %REMOTE_USER%@%REMOTE_HOST% "if [ -f %REMOTE_DIR%/%FILENAME% ]; then echo EXISTS; fi" > NUL 2>&1
        
        if %errorlevel% == 0 (
            echo %FILENAME% already exists on remote server, skipping upload.
        ) else (
            echo Uploading %%F to %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%
            :retry
            scp "%%F" %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%
            if %errorlevel% neq 0 (
                echo Upload failed, retrying...
                goto retry
            )
            echo Upload of %%F succeeded.
        )
    )
)

endlocal
pause

保存后双击运行

二、后续
删除不再使用的密钥对
当你不再使用某个密钥对时,最好将其从本地和远程服务器中删除,以防止潜在的安全风险。

删除本地私钥和公钥文件:C:\Users\YourUsername.ssh\id_rsa 和 id_rsa.pub 文件

从远程服务器删除公钥:

使用SSH连接到远程服务器,然后编辑 ~/.ssh/authorized_keys 文件,删除不再使用的公钥条目。

ssh user@remote_server
nano ~/.ssh/authorized_keys

在编辑器中找到对应的公钥条目并删除,然后保存文件并退出。

上一篇 下一篇

猜你喜欢

热点阅读