Fstab
如何在非標準 SSH 埠上為 sshfs 創建 fstab 條目並使用 ssh 密鑰
伺服器正在偵聽埠“8765”並需要 SSH 密鑰進行身份驗證。
我可以使用以下命令掛載遠端目錄:
sshfs -o idmap=user,port=8765 stephen@server:/export/usb2T /mnt/usb2T
伺服器辨識出我的 SSH 公鑰。
我已經看到,作為標準 SSH 埠的 fstab 條目,這將是:
stephen@server:/export/inbox /mnt/inbox fuse.sshfs defaults,_netdev 0 0
但我需要添加伺服器的監聽埠和客戶端使用者的 SSH 公鑰。
我怎麼做?
我希望這個 sshfs 掛載到:
- 僅在實現網路連接後發生;
- 使掛載上的文件可執行。
將 somethingSomething 的優秀文章中提供的資訊以及所需的選項匯總在一起,我們得到了:
stephen@server:/export/inbox /mnt/inbox fuse.sshfs x-systemd.automount,x-systemd.requires=network-online.target,_netdev,user,idmap=user,transform_symlinks,port=2314,identityfile=/home/stephen/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000,exec 0 0
其他選項是:
x-systemd.automount
為 systemd 創建一個自動掛載單元x-systemd.requires=network-online.target
僅在實現網路連接後才嘗試掛載exec
使已安裝驅動器上的文件可執行。
/etc/fstab
您要查找的條目是:使用
,port=PORTNUMBER
and,IdentityFile=/root.ssh/id_rsa
選項:sshfs#USER@IP-ADDRESS:/export/inbox /mnt/inbox fuse.sshfs delay_connect,_netdev,user,IdentityFile=/root.ssh/id_rsa,idmap=user,allow_other,default_permissions,port=PORTNUMBER,uid=0,gid=0,rw,nosuid,nodev 0 0
ssh
通過SSHFS
遠端掛載目錄
- 通過設置 SSH 密鑰(如上所述),您無需在安裝時輸入密碼。這將使安裝更加簡單,甚至可以使用腳本或在您登錄本地電腦時自動完成。
- 與 SSH 一樣,本地電腦和遠端電腦之間的所有流量都是加密的。
- 如果您是本地電腦的管理員,您可以將系統配置為在電腦啟動時執行此操作,以便始終安裝它。您需要通過添加這樣的一行來修改 /etc/fstab (不過都在一行上):
- 您還需要設置 SSH 密鑰來執行此操作,因此您不必輸入密碼。有關選項的說明,請參閱 SSHFS 手冊頁。如果您發現上面的 fstab 行不能正常工作(導致啟動時出現錯誤消息),您可以將其修改為這個(注意添加 noauto):
sshfs#USER@IP-ADDRESS: /export/inbox fuse defaults,user,noauto, uid=einstein,gid=einstein,allow_other,IdentityFile=/home/alfred/.ssh/id_dsa 0 0
sshfs#USER@IP-ADDRESS: /export/inbox fuse defaults,user,uid=USER,gid=USER,allow_other,IdentityFile=/home/USER/.ssh/id_dsa 0 0
使用不帶 mount -a 的 fstab 自動掛載 sshfs
SSHFS 接受許多您可能想要檢查的命令行選項。例如,如果遠端電腦上的 SSH 伺服器在埠 12345 而不是埠 22 上執行,您可以這樣做:
sshfs USER@IP-ADDRESS: /export/inbox -p PORTNUMBER
以下是命令行選項:
SSHFS 選項:
-p PORT equivalent to '-o port=PORT' -C equivalent to '-o compression=yes' -F ssh_configfile specifies alternative ssh configuration file -1 equivalent to '-o ssh_protocol=1' -o reconnect reconnect to server -o delay_connect delay connection to server -o sshfs_sync synchronous writes -o no_readahead synchronous reads (no speculative readahead) -o sshfs_debug print some debugging information -o cache=BOOL enable caching {yes,no} (default: yes) -o cache_timeout=N sets timeout for caches in seconds (default: 20) -o cache_X_timeout=N sets timeout for {stat,dir,link} cache -o workaround=LIST colon separated list of workarounds none no workarounds enabled all all workarounds enabled [no]rename fix renaming to existing file (default: off) [no]nodelaysrv set nodelay tcp flag in ssh (default: off) [no]truncate fix truncate for old servers (default: off) [no]buflimit fix buffer fillup bug in server (default: on) -o idmap=TYPE user/group ID mapping, possible types are: none no translation of the ID space (default) user only translate UID of connecting user file translate UIDs/GIDs based upon the contents of uidfile and gidfile -o uidfile=FILE file containing username:uid mappings for idmap=file -o gidfile=FILE file containing groupname:gid mappings for idmap=file -o nomap=TYPE with idmap=file, how to handle missing mappings ignore don't do any re-mapping error return an error (default) -o ssh_command=CMD execute CMD instead of 'ssh' -o ssh_protocol=N ssh protocol to use (default: 2) -o sftp_server=SERV path to sftp server or subsystem (default: sftp) -o directport=PORT directly connect to PORT bypassing ssh -o slave communicate over stdin and stdout bypassing network -o transform_symlinks transform absolute symlinks to relative -o follow_symlinks follow symlinks on the server -o no_check_root don't check for existence of 'dir' on server -o password_stdin read password from stdin (only for pam_mount!) -o SSHOPT=VAL ssh options (see man ssh_config)