在我的大学,我通过 ssh 进入 ubuntu 计算集群来运行 matlab 和 mathematica 等软件。我喜欢将我创建的文件保存在自己的 (ubuntu) 机器上,这样 (1) 它们都集中在一个地方,(2) 我可以使用本地机器上的软件来编辑文件。
我目前的方法是 1) 登录到远程机器 2) 使用 ifconfig 查找我的本地 ip 地址 3) 使用 sshfs 在远程机器上挂载我想要使用的目录,手动输入我的本地 ip 地址
这个方法效果很好,但是我想知道有没有办法自动化这个,或者有更好的方法?例如,我可以让某些目录(如 /home/user/Classes)自动挂载到远程机器上,而不用处理我的 IP 地址吗?
答案1
如果您还没有这样做,您要做的第一件事就是实现无需密码登录。
http://www.linuxproblem.org/art_9.html
你要做的第二件事就是在用户登录时运行一个脚本
您可以通过多种方式执行此操作,最简单的方法是将命令放在 .bashrc 或 .profile 文件中
第一行确保它只在 ssh 终端中运行,如果没关系的话,你可以将其删除。
if [ -n "$SSH_TTY" ]; then
$HOME/bin/run_ssh_login_script
fi
当然,你可以发挥创造力,检测连接的 IP 地址和登录用户详细信息。我还发现了一个很酷的脚本,用于执行连接http://taggedzi.com/articles/display/bash-shell-script-to-mount-remote-systems-using-sshfs
答案2
需要注意的是,您应确保机器之间的身份验证是单向的。这意味着您应该从笔记本电脑访问服务器,但不应允许服务器以相同的方式访问笔记本电脑。这里可能不太明显,但对于较大的网络,此安全问题会变得更加明显。
为什么不先在本地安装远程目录,然后再ssh
安装到机器上(sshfs
、fuse
、fstab
)?是因为笔记本电脑上的文件已更新,而远程机器上需要这些更新的版本吗(rsync
)?服务器运行后,文件是否已更新,然后您需要将这些处理过的副本带下来? 如果您提供了一个示例工作流程(包括文件),那么该信息将有助于回答您的问题。
您说您希望能够使用本地软件编辑文件,因此您可以sshfs
在笔记本电脑上设置以连接到远程服务器,只要您可以在无法访问服务器的情况下不编辑文件即可。
另一个选择是使用rsync
,如果真实来源或更新副本在笔记本电脑和服务器之间交换,这可能是更好的解决方案。您将能够同步它们,并判断rysnc
哪个系统是最新的。
在我看来,你似乎有点想太多了,不是登录服务器并从笔记本电脑上安装目录,而是继续将这些目录从服务器安装到笔记本电脑,然后再安装ssh
到系统中。
为了使这一切变得更容易,请研究如何进行.ssh/config
设置PubKeyAuthentication
。