2011-12-22 51 views
1

如果你有一个通过sshfs映射的网络驱动器,有没有办法通过ssh自动登录,每当改变到该目录?当移动到映射的sshfs时自动SSH会话

$USER:$LOCALHOST:~: sshfs $USER:$REMOTEHOST /Volumes/dev0 
$USER:$LOCALHOST:~: cd /Volumes/dev0 
$USER:$REMOTEHOST:~ 
+0

它与编程有什么关系? – 2011-12-22 06:32:54

+0

嘿尤金,你是对的,我天真地在这里添加这个问题,我认为它更适合超级用户。 (如果我错了,那么你会推荐将它移动到哪里?)还有一种方法可以将它移动到超级用户,而无需粘贴它(以及任何答案)。 – 2012-01-06 00:43:23

回答

1

Thomas Jansson provides a guide on integrating sshfs with autofs。我在这里总结一下他的指导,所以这个答案仍然是值得的东西,如果他的网站曾经下线:

创建/etc/auto.master

/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost 

确保您uidgid匹配您的用户ID和全局唯一标识符/etc/passwd或用于提供系统帐户的任何内容。

现在添加几行/etc/auto.sshfs,每个所需的文件系统之一,在下面的表格:

bar -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#[email protected]\: 

一定要改变[email protected]到任何用户账号和主机名你要使用。将领导bar更改为任何您想要命名的目录。当cd /mnt/sshfs/bar时,autofs会自动为您安装FUSE文件系统。当然,使用SSH密钥和ssh-agent(1)将使这更令人愉快。

更新

...创建字面上你登录到其他机器上的一个目录。

嘿,这是非常聪明的想法。你可以写一个shell function,检查你想要的目录名到cd,并为你启动一个新的ssh。如果目录名称匹配,也许你可以(ab)使用PROMPT_COMMAND变量到ssh。要警告的是,要么减慢你的正常cd每提示显示。

,我已经使用并享受另一种方法是一个小的小帮手脚本,~/bin/ssh-to

#!/bin/bash 
hostname=`basename $0` 
ssh $hostname $* 

符号链接新的名字这个shell脚本:ln -s ssh-to sarnold.org,然后你可以运行一个命令或登录一个远程站点而无需键入ssh所有的时间:

sarnold.org python foo.py 

任何机器您使用的符号链接并运行任何命令你给它的名称,它会您登录到。

+0

嘿阿诺德,虽然这足以自动安装FS并且非常棒(谢谢!),但我正在寻找一种方法来说,创建一个目录,可以真正将您记录到另一台机器中。假设你需要在该机器上运行一个命令(可能是python bar/foo)。py)你需要打开第二个终端来管理它。 – 2012-01-06 00:49:24