我有两台具有相同文件夹结构的机器。一个是我的个人电脑,另一个是远程电脑。有时我希望程序在远程计算机上运行。此刻我总是需要
- ssh 到远程计算机
- 输入我的密码
- 使用 rsync 手动复制文件夹
即使我会为 rsync 编写一个脚本(如下所示),我仍然需要每次都输入我的密码或在 bash 脚本中硬编码(这将是愚蠢的)。
#!/bin/bash/
pathToSync="/path/to/my/Folder/"
rsync -r -l -p --progress "$pathToSync"/ myUsername@nameOfRemoteComputer:"$pathToSync"
有人知道如何更有效地解决这个问题吗?这样最后我只需要写
sync myFolder nameOfRemoteComputer
这个问题已经回答了。
作为下面给出的正确答案的补充。以下是无需输入密码即可制作ssh
和工作的 bash 命令。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
)
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 密钥对。
我建议您使用Passwords and Keyes应用程序。它应该预装在 Ubuntu 上。
新密钥对
按绿色+并创建一个新的Secure Shell Key。按照对话框创建新的密钥对。
在这里您可以找到生成密钥对的终端命令,
id_rsa
并且id_rsa.pub
您需要将副本复制id_rsa.pub
到您的服务器以使密钥对工作。在新行中将 的内容添加
id_rsa.pub
到服务器上的文件中。~/.ssh/authorized_keys
您可以使用命令:cat id_rsa.pub >>~/.ssh/authorized_keys
通过 ssh 登录后。如果您为私钥设置了密码,则必须输入密码才能解锁。不指定密码以方便使用。