如果您维护一台远程机器,那么在本地挂载该机器的文件系统以移动文件会非常有用。MacFuse 并sshfs使其变得非常简单,尽管在登录时自动设置和安装它可能有点棘手。
首先,确保您可以在不输入密码的情况下通过 ssh 连接到远程机器。在Leopard 中进行设置,最终在登录时支持 ssh-agent并验证它是否有效:
ssh USER@HOSTNAME:
Run Code Online (Sandbox Code Playgroud)
如果它在没有提示输入密码或密钥的情况下让您登录,您就可以继续了。
接下来,sshfs按照在 OS X Leopard 10.5.5 上使用 MacFuse 1.7 安装 sshfs 1.9安装和 MacFuse 。
找出您想要安装远程卷的位置。我不建议使用,/Volumes因为当您卸载东西时,OS X 似乎会自动删除其中的目录。所以我用/mnt/HOSTNAME
mkdir -p /mnt/主机名
(显然,您将替换HOSTNAME为远程服务器的名称。)
然后确保您可以使用以下命令将远程站点安装为卷而无需指定密码sshfs:
sshfs USER@HOSTNAME:PATH /mnt/HOSTNAME -oreconnect,allow_other,volname=VOLUME_NAME
Run Code Online (Sandbox Code Playgroud)
将 VOLUME_NAME 设置为您希望在 Finder 中为您的卷命名的任何内容。我使用了 HOSTNAME。PATH 是可选的;将其设置为您要在远程主机上安装的任何目录。如果未设置,它将使用您的主目录。
如果您没有收到错误消息,并且当您执行此操作时
,远程文件会显示出来,那么您就可以继续下一步了。ls /mnt/HOSTNAME
卸载刚刚挂载的卷:
卸载 /mnt/主机名
现在是棘手的聚会。您需要创建一个 LaunchAgent 项目以在登录时挂载您的卷。这本身很容易。但是,如果您的系统与我的系统类似,则此项目的 SSH_AUTH_SOCK 设置不正确,因此如果不使用密码,它将无法登录到远程主机。您必须自己手动设置 SSH_AUTH_SOCK。
首先,创建一个包装器sshfs,为您设置 SSH_AUTH_SOCK。把它放在任何你想要的文件中。我建议/opt/local/bin/sshfs-authsock。
#!/bin/bash
export SSH_AUTH_SOCK=$(ls -t /tmp/launch-*/Listeners | head -1)
/opt/local/bin/sshfs $*
Run Code Online (Sandbox Code Playgroud)
基本上,此文件将 SSH_AUTH_SOCK 设置为 tmp 目录中的最新套接字。在大多数情况下,这应该是正确的。它不太可能失败,如果失败也不会有安全问题。
现在您终于可以创建 launchd plist 文件了。把这个放进去
~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs.plist
Run Code Online (Sandbox Code Playgroud)
(如果您的主机的路径是,foo.niskala.org并且您的 PATH 是/tmp,那么您生成的文件org.niskala.foo.tmp.sshfs.plist名将是。这只是一个约定,您可以随意命名文件,真的;但它确实需要以 . 结尾.plist。)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>BACKWARDS_HOST_DNS.PATH.sshfs</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/sshfs-authsock</string>
<string>USER@HOSTNAME:</string>
<string>/mnt/HOSTNAME</string>
<string>-oreconnect,allow_other,volname=VOLUME_NAME</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
现在加载 plist 文件并运行它以查看它是否有效。
launchctl load ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs
launchctl start BACKWARDS_HOST_DNS.PATH.sshfs
Run Code Online (Sandbox Code Playgroud)
如果没有看到错误消息,请查看卷是否已正确安装:
ls /mnt/主机名
如果您的远程文件显示出来,那就太好了!你完成了!
如果没有,请使用
launchctl unload ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs
Run Code Online (Sandbox Code Playgroud)
在对其进行编辑之前卸载文件,然后在重试之前使用ps auxwww | grep sshfs和kill查找并终止任何sshfs进程。
参考:
| 归档时间: |
|
| 查看次数: |
11940 次 |
| 最近记录: |