Fstab

如何在非標準 SSH 埠上為 sshfs 創建 fstab 條目並使用 ssh 密鑰

  • September 21, 2019

伺服器正在偵聽埠“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 掛載到:

  1. 僅在實現網路連接後發生;
  2. 使掛載上的文件可執行。

將 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=PORTNUMBERand,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   

Mead 的安全外殼指南 (SSH)

如何在 fstab 中掛載 sshfs 遠端目錄

使用不帶 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) 

人/1/sshfs

引用自:https://unix.stackexchange.com/questions/519613