如何用一行代码将克隆文件夹复制到远程计算机?

如何用一行代码将克隆文件夹复制到远程计算机?

我有两台具有相同文件夹结构的机器。一台是我的个人计算机,另一台是远程计算机。有时我想在远程计算机上运行某个程序。目前我总是需要

  1. ssh 到远程计算机
  2. 输入我的密码
  3. 使用 rsync 手动复制文件夹

即使我为 rsync 编写了一个脚本(如下所示),我仍然需要每次输入密码或将其硬编码在 bash 脚本中(这很愚蠢)。

#!/bin/bash/
pathToSync="/path/to/my/Folder/"
rsync -r -l -p --progress "$pathToSync"/ myUsername@nameOfRemoteComputer:"$pathToSync"

有人知道如何更有效地解决这个问题吗?这样最后我只需要写

sync myFolder nameOfRemoteComputer

问题已得到解答。作为下面给出的正确答案的补充。以下是无需输入密码即可执行的 bash 命令。在客户端计算机上 输入
sshrsync

mkdir ~/.ssh # 该文件夹可能已经存在 chmod 700 ~/.ssh cd ~/.ssh ssh-keygen -t rsa # 这将创建一个公钥 cp authorized_keys authorized_keys_Backup # 这将备份旧的/现有的密钥 cat id_rsa.pub >>~/.ssh/authorized_keys ssh-copy-id nameOfRemoteComputer

完成!(-> 现在检查 ssh 是否无需密码即可工作)(我在客户端和远程计算机上有相同的用户名,否则会这样ssh-copy-id myRemoteUsername@nameOfRemoteComputer

答案1

SCP

由于您具有 ssh 访问权限,因此您只需使用命令即可scp完成您的工作。

在终端输入:

scp -r /path/to/my/folder myUsername@nameOfRemoteComputer:/path/to/my/folder

如果您在两台计算机上使用相同的用户名,您甚至可以省略myUsername@并只需输入:

scp -r /path/to/my/folder nameOfRemoteComputer:/path/to/my/folder

远程计算机的名称可以是 IP、域名或在 处分配的名称/etc/hosts

避免输入 SSH 连接密码

您可以在服务器和本地机器之间设置 SSH 密钥对。

我建议你使用密码和密钥应用程序。它应该已在 Ubuntu 上预装。

在此处输入图片描述

新的密钥对

按下绿色+并创建一个新的安全外壳密钥. 按照对话框的提示创建一个新的密钥对。

这里您可以找到终端命令来生成密钥对,id_rsa并且id_rsa.pub您需要获取一份副本id_rsa.pub到您的服务器以使密钥对起作用。

将内容添加到您服务器上的新行中的id_rsa.pub文件中。通过 ssh 登录后,您可以使用命令:。~/.ssh/authorized_keyscat id_rsa.pub >>~/.ssh/authorized_keys

如果您为私钥设置了密码,则必须输入密码才能解锁。为方便使用,请勿指定密码。

相关内容