如何在非标准 SSH 端口上并使用 ssh 密钥为 sshfs 创建 fstab 条目

如何在非标准 SSH 端口上并使用 ssh 密钥为 sshfs 创建 fstab 条目

服务器正在侦听端口“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 公钥。

我怎么做?

答案1

/etc/fstab您要查找的条目是:

使用,port=PORTNUMBER,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通过withSSHFS从远程挂载目录

  • 通过设置 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 的安全 Shell (SSH) 指南

如何在fstab中挂载sshfs远程目录

使用 fstab 自动挂载 sshfs,无需 mount -a

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

答案2

我希望将此 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使已安装驱动器上的文件可执行。

相关内容