如何通过Linux终端上传本地文件到服务器

San*_*ami 77 linux ssh putty

我正在尝试使用 Putty 或 SSH 将本地文件上传到服务器,但没有在那里上传。

是否有任何直接方法可以在不使用 FTP 等的情况下从 Linux 终端将文件从本地上传到服务器?

Gia*_*968 105

当然。scp像这样使用(安全副本):

scp [source file] [username]@[destination server]:.
Run Code Online (Sandbox Code Playgroud)

当然替换括号中的[source file],[username][destination server]匹配您的本地设置。因此,如果该文件是cool_stuff.txt并且您在远程服务器上的用户名是sanjeev并且目标服务器是example.com,则命令将是:

scp cool_stuff.txt sanjeev@example.com:.
Run Code Online (Sandbox Code Playgroud)

并且源也可以是远程的,因此您可以执行与上述示例相反的操作:

scp sanjeev@example.com:cool_stuff.txt .
Run Code Online (Sandbox Code Playgroud)

该命令会将远程文件复制cool_stuff.txt到您所在的任何本地目录。如果您对多个文件执行此操作,只需*像普通cp命令一样使用通配符 ( ) 。

另外,.just表示直接目录路径;例如,您在运行命令时所处的位置或目标服务器上的远程用户拥有的直接路径。但是您也可以指定一个类似于/this/path/right/here本地到远程示例中的路径:

scp cool_stuff.txt sanjeev@example.com:/this/path/right/here
Run Code Online (Sandbox Code Playgroud)

或者远程到本地的例子就在这里:

scp sanjeev@example.com:cool_stuff.txt /this/path/right/here
Run Code Online (Sandbox Code Playgroud)

现在,如果远程服务器不允许 SSH 而只允许 SFTP,那么 SFTP 是要走的路。但是scp当您只想扔一个文件而不是从命令行手动执行整个 SFTP 过程时非常有用。


zx8*_*754 24

当通过ssh密钥登录远程服务器时,我们可以使用以下-i标志将我们的密钥传递给服务器:

scp -i /path/to/.ssh/id_rsa path/to/file/myFiles.gz myServer.com:/folder/on/server
Run Code Online (Sandbox Code Playgroud)

-i identity_file
选择从中读取公钥认证的身份(私钥)的文件。
此选项直接传递给 ssh(1)。


小智 16

要添加到 Jake's answer,您可以.通过在 URL 末尾添加路径来指定一个位置 - 而不仅仅是- 要复制到:

scp /path/to/file username@servername/ip:/destination/folder/
Run Code Online (Sandbox Code Playgroud)