请不要建议使用 WinSCP、PuTTY 等工具,因为我已经scp
在 Linux 服务器上尝试了以下命令,但仍然没有得到输出:
scp /file/to/send username@remote:/where/to/put
scp username@remote:/file/to/send /where/to/put
scp username@source:/location/to/file username@destination:/where/to/put
我对这些命令不太了解,所以如果我错了,请纠正。
答案1
这很简单,但你可能有点困惑。首先,这是你想要的吗?Linux 服务器 --> Win PC
错误:SecureCRT 不是服务器,而是一个(最好的)远程访问软件。另外,当您在 Linux 服务器上键入显示的命令语句时,您正在尝试从其 ssh 客户端软件(在 Linux 服务器上)连接到 ssh 服务器(Win PC)-> 您可能没有在 Win PC 上安装 ssh 服务器,因此这是一个概念错误。
SCP 是一种通过 SSH 进行的协议,因此您需要在一台机器上安装 SSH 服务器,在另一台机器上安装 SSH 客户端。您始终需要一个客户端和一个服务器 SSH 对。您可以选择 1 台设备作为 SSH 服务器,但另一台设备必须是 SSH 客户端。SSH 服务器是一种等待来自 SSH 客户端的请求的服务,因为 SSH 是一种基于客户端-服务器工作的协议。当您键入 SCP 传输命令时,您正在使用安装在这台机器上的 SSH 客户端软件(可以是台式电脑或其他服务的服务器,但始终充当 SSH 的客户端),而远程机器(另一侧)充当 SSH 的服务器。在您选择充当服务器的机器上安装服务器软件,在客户端机器上安装客户端软件,但您可以在同一台机器上安装这两种类型的软件。通常,您会在 Linux 服务器上安装 SSH 服务器软件,以便从其他计算机(PC ssh 客户端)进行远程访问,同时您还会在 Linux 服务器上安装 SSH 客户端软件,以便可以选择连接到其他计算机(充当 ssh 服务器)。在 PC 上,您通常只安装 ssh 客户端软件,但如果您愿意,也可以安装 ssh 服务器软件。
Linux 服务器可以是 SSH 服务器或 SSH 客户端 -> 您选择其角色。此处的命令仅针对一种选项,即 Linux 服务器作为 SSH 服务器。
1)Linux服务器作为SSH服务器(这是最佳选择,因为 openssh 已安装在 Linux 服务器上)=> 在这种情况下,Win PC 必须是 SSH 客户端。您需要在 Linux 上安装 SSH 服务器软件,在 Win PC 上安装 SSH 客户端软件。例如,您可以安装 openssh 服务器和 opensshclient(是的,也可用于 Win,免费)。
Linux 服务器(SSH 服务器)(如果尚未安装)
Debian,Ubuntu -># apt install openssh-server
RedHat、Centos、Fedora -># yum install openssh-server
检查ssh服务器状态:
# systemctl status sshd
或者# service sshd status
其他 Linux 命令
如果没有开始:
# systemctl start sshd
WinPC(SSH 客户端):
要求:
- Win 10 1809或更高版本。
- Powershell(已安装并启用)作为管理员
- OpenSSH 客户端已安装。您只需要启用它。
从 ADMIN cmd 或 shell(命令提示符 -> 右键单击 -> 以管理员身份运行):
C:\> powershell
Windows PowerShell Copyright (C) Microsoft
Corporation. All rights reserved. Try the new cross-platform
PowerShell https://aka.ms/pscore6
PS C:\>
PS C:\> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed --> the OpenSSHclient is installed and enabled
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent --> the OpenSSHserver is disabled
在这种情况下,您的 openssh 客户端正常!但只有当您的 openssh 客户端“不存在”时,您才应该执行此步骤:
PS C:\> Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Path :
Online : True
RestartNeeded : False
下一步是重新启动 Win PC。
重启后,检查新的 openssh 客户端状态: (从 ADMIN cmd 或 powershell)
PS C:\> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
2) 现在我们有了Linux服务器和Win PC OK。
因为我们选择 Linux 作为 SSH 服务器,WinPC 作为客户端,所以我们无法直接从 Linux 向 Win PC 发送文件。我们需要从服务器检索文件,因此客户端 SSH 将连接到 SSH 服务器并要求其复制文件。在实践中,效果是一样的,但我们必须从 SSH 客户端(Win PC)输入命令。以下是说明:
数据示例:
SSH 服务器用户名: 哈利 (Linux 服务器中的有效用户)
Linux服务器用户名密码: 测试(哈利的密码)
SSH 服务器 IPv4 @地址: 200.1.1.1 (Linux 服务器)
SSH 服务器端口: 5555 (如果您更改了默认端口 22) 要传输的 Linux 服务器文件: /mandrake/star.txt
Win PC下载文件夹: C:\用户\Harry\下载>
在 Win PC(openssh 客户端)上:
打开 cmd 并转到下载文件夹
C:\Users\Harry> cd downloads
C:\Users\Harry\Downloads>
C:\Users\Harry\Downloads> scp -P 5555 [email protected]://mandrake/star.txt
Hi, I am the Linux server!!!
[email protected]'s password: test
star.txt 100% 2998 304.1KB/s 00:00
C:\Users\Harry\Downloads>
瞧!!!使用命令行进行 SCP 传输非常专业(在 Win 和 Linux 中均免费).... 自由、开放网络........