web-dev-qa-db-ja.com

非標準の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公開キーを追加する必要があります。

それ、どうやったら出来るの?

1
Stephen Boston

このsshfsマウントを次のようにしたい:

  1. ネットワーク接続が達成された後にのみ発生します。
  2. マウント上のファイルを実行可能にします。

何かで提供された情報をまとめる必要なオプションと一緒に何かの優れた投稿:

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マウントされたドライブ上のファイルを実行可能にします。
1
Stephen Boston

あなたが探している/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を使用してSSHFSでディレクトリをマウントしています

  • (上記のように)SSHキーを設定することで、マウント時にパスワードを入力する必要がなくなります。これにより、マウントがはるかに簡単になり、スクリプトを使用して、またはローカルコンピューターにログインしたときに自動的にマウントすることもできます。
  • SSHと同様に、ローカルコンピューターとリモートコンピューター間のすべてのトラフィックは暗号化されます。
  • ローカルコンピューターの管理者である場合は、コンピューターの起動時にこれを実行するようにシステムを構成して、常にマウントされるようにすることができます。次のような行を追加して、/ etc/fstabを変更する必要があります(ただし、すべて1行で)。
  • これを行うには、パスワードを入力する必要がないように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   

セキュアシェル(SSH)のミードガイド

ssfsリモートディレクトリをfstabにマウントする方法

mount -aなしでfstabを使用してsshfsを自動マウント

SSHFSは、チェックアウトしたい多くのコマンドラインオプションを受け入れます。たとえば、リモートコンピューターのSSHサーバーがポート22ではなくポート12345で実行されている場合は、次のようにします。

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) 

man/1/sshfs

2