如何从 Linux 服务器 SCP 到 Windows 客户端

pno*_*ata 37 windows linux ftp scp putty

我正在使用 PuTTY 通过 SSH 连接到 Linux 机器并尝试将文件复制到某处(任何地方)到我的本地机器。我推测SCP是这个职位的最佳人选,但真的不关心,只要解决方案的工作!

cd到包含我想要的文件的目录 ( app.war) 并键入以下内容:

scp app.war ./
Run Code Online (Sandbox Code Playgroud)

我试过两者都无济于事:

scp app.war ./C:/Users/myUser/
scp app.war ./Users/myUser/
Run Code Online (Sandbox Code Playgroud)

这让我想到,也许 SCP 是一个客户端/服务器工具,需要在我的 Windows 机器上安装一个客户端,而该客户端并不存在。

我只是使用了错误的语法吗?还是我离基地很远?如果是这样,我有哪些选择?提前致谢!

ale*_*xus 34

为了将文件复制回 Windows,您需要在 Windows 上运行 SSH 守护进程/服务,使用此工具要容易得多,它可以从 Putty 导入会话,非常简单的转发客户端爱它!

WinSCP :: 适用于 Windows 的免费 SFTP 和 FTP 客户端


Geo*_*e M 14

你是对的。SSHD 是运行在主机上的 SSH 服务器服务。它接受来自 SSH 客户端(如 PuTTy)、SCP 客户端和 SFTP 客户端的连接。

您可以pscp从托管PuTTY的同一网站下载。

在 Windows 机器上,您将执行类似于

pscp.exe someuser@somehost.com:/path/to/app.war c:\tmp


ish*_*ael 12

Windows 10 现在内置了 OpenSSH。 https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

获取管理员命令提示符

Open PowerShell as an Administrator.
Run Code Online (Sandbox Code Playgroud)

检查可用版本

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Run Code Online (Sandbox Code Playgroud)

安装客户端

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Run Code Online (Sandbox Code Playgroud)

安装服务器

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Run Code Online (Sandbox Code Playgroud)

启动服务器并在启动时启用

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Run Code Online (Sandbox Code Playgroud)

查找您的 Windows IP 地址

ipconfig
Run Code Online (Sandbox Code Playgroud)

在您的远程 (Linux) 机器上,找到您的 IP 地址。

ifconfig
Run Code Online (Sandbox Code Playgroud)

创建一个公共 SSH 密钥

ssh-keygen.exe
Run Code Online (Sandbox Code Playgroud)

将公钥从本地 (Windows) 复制到远程 (Linux) 机器,这样您就不必一直输入密码。

请注意,ssh-copy-id 当前在 Windows 上不可用。

cat C:\Users\YOU/.ssh/id_rsa.pub | ssh USER@REMOTE_IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)

在你的 Linux 机器上做同样的事情(注意,ssh-copy-id 不起作用)

ssh-keygen # if needed
cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS_IP 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
  • 上面的方法对我不起作用,所以我最终手动 SCPing 公钥并将其粘贴到 C:/Users/YOU/.ssh/authorized_keys 文件中。

  • 那仍然不起作用,所以我不得不修改 sshd_config 文件。

    • 以管理员身份打开记事本

    • 打开 %programdata%\ssh\sshd_config

    • 添加以下几行:

        Match User YOU
             AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
  • 重启

如果您还没有密码,请在 Windows 上创建一个密码

System Settings...Sign-in options
Run Code Online (Sandbox Code Playgroud)

-- 请注意,您仍然可以通过 a) 将“需要登录”选项设置为从不和 b) 使用“netplwiz”命令并取消选中“用户必须输入密码...”复选框来禁用 Windows 登录屏幕。

现在你应该能够从你的 Linux 机器上 SSH 或 SCP

scp FILE WINDOWS_IP:C:/Users/YOU/Desktop
Run Code Online (Sandbox Code Playgroud)

  • 这一点语法正是我来寻找的; scp 文件 WINDOWS_IP:C:/Users/YOU/Desktop 谢谢。 (3认同)