我有两台具有相同文件夹结构的机器。一台是我的个人计算机,另一台是远程计算机。有时我想在远程计算机上运行某个程序。目前我总是需要
- ssh 到远程计算机
- 输入我的密码
- 使用 rsync 手动复制文件夹
即使我为 rsync 编写了一个脚本(如下所示),我仍然需要每次输入密码或将其硬编码在 bash 脚本中(这很愚蠢)。
#!/bin/bash/
pathToSync="/path/to/my/Folder/"
rsync -r -l -p --progress "$pathToSync"/ myUsername@nameOfRemoteComputer:"$pathToSync"
有人知道如何更有效地解决这个问题吗?这样最后我只需要写
sync myFolder nameOfRemoteComputer
问题已得到解答。作为下面给出的正确答案的补充。以下是无需输入密码即可执行的 bash 命令。在客户端计算机上 输入
:ssh
rsync
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_keys
cat id_rsa.pub >>~/.ssh/authorized_keys
如果您为私钥设置了密码,则必须输入密码才能解锁。为方便使用,请勿指定密码。