通过 azure cli 将文件从 Windows 10 传输到 Linux?

通过 azure cli 将文件从 Windows 10 传输到 Linux?

我有一个 Windows 10 虚拟机,我想将文件传输到 Azure 上的 Linux 计算机。

我安装了AADSSH登录通过 Azure 门户在 Linux 计算机上扩展。通过Windows 10上安装的Azure CLI,我通过这种方式连接到linux机器来检查ssh连接:

az login
az ssh vm --ip 10.11.11.11

成功了,我尝试在Windows 10上通过powershell在Linux上传输文件:

scp file.sh [email protected]:/opt/Linux/

它要求我输入密码,但不起作用。我的印象是我必须使用 azure cli 命令来传输文件,因为我已连接登录,我搜索过,有复制但这似乎不是正确的。

我注意到如果我在 powershell 上这样做:

ssh [email protected]@10.11.11.11

它告诉我:权限被拒绝(公钥)

但如果我这样做:

az ssh vm --ip 10.11.11.11

我可以进去!

我应该怎么办?我缺少什么?

答案1

Azure CLI 不直接支持文件传输;没有az scpaz ssh scp命令。但它确实间接支持基于 OpenSSH 的应用程序。

首先,运行此命令:

az ssh config --ip * --file ./azure-sshconfig --keys-destination-folder ./azure-keys

az ssh config命令将创建一个本地azure-sshconfig文件以及一个azure-keys包含 OpenSSH 样式配置和能够访问 Azure VM 的密钥的文件夹。请注意,密钥的使用寿命有限;截至撰写本文时,它们将在一小时后过期,并且这似乎不可配置。

获得配置和密钥后,您可以使用其他 OpenSSH 实用程序,例如scpsftp,它们都带有一个-F ./azure-sshconfig参数来指示它们使用您的临时密钥:

scp -F ./azure-sshconfig <local file> <vm name>:~/temp

也可以rsync通过传递来获得(例如,在 WSL 中)工作--rsh 'ssh -F ./azure-sshconfig'- 在这种情况下,rsync不直接接受-F sshconfig参数,但您可以ssh完全覆盖它。我还没有尝试过这个,但它应该有效。

相关内容