2011-12-22 61 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