如果您有一个通过 sshfs 映射的网络驱动器,是否有办法在更改到该目录时通过 ssh 自动登录?
$USER:$LOCALHOST:~: sshfs $USER:$REMOTEHOST /Volumes/dev0
$USER:$LOCALHOST:~: cd /Volumes/dev0
$USER:$REMOTEHOST:~
Thomas Jansson 提供了sshfs
与autofs
. 我将在这里总结他的指南,所以如果他的网站离线,这个答案仍然很有价值:
创建一个/etc/auto.master
:
/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
确保您的uid
和gid
匹配您的用户 ID 和 guid/etc/passwd
或您用来提供系统帐户的任何内容。
现在将行添加到/etc/auto.sshfs
中,每个所需的文件系统一个,格式如下:
bar -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#tjansson@bar.com\:
请务必更改tjansson@bar.com
为您将要使用的任何用户帐户和主机名。将前导更改为bar
您希望目录命名的任何内容。当你cd /mnt/sshfs/bar
,autofs
会自动为你挂载 FUSE 文件系统。当然,使用 SSH 密钥和 SSHssh-agent(1)
将使这更加愉快。
更新
...创建一个目录,让您真正登录到另一台机器。
嘿,这个主意很聪明。您可以编写一个shell 函数来检查您想要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
它会将您登录到您用于符号链接名称的任何机器并运行您给它的任何命令。