sshfs --help
を見ましたが、キーファイルについては何も言及されていません。コンピューターに複数のpub/privキーペア(異なるサーバー用)があり、使用するキーを指定したいと思います。どうすればよいですか?
usage: sshfs [user@]Host:[dir] mountpoint [options]
general options:
-o opt,[opt...] mount options
-h --help print help
-V --version print version
SSHFS options:
-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 sshd (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
-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 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)
Fuse options:
-d -o debug enable debug output (implies -f)
-f foreground operation
-s disable multi-threaded operation
-o allow_other allow access to other users
-o allow_root allow access to root
-o nonempty allow mounts over non-empty file/dir
-o default_permissions enable permission checking by kernel
-o fsname=NAME set filesystem name
-o subtype=NAME set filesystem type
-o large_read issue large read requests (2.4 only)
-o max_read=N set maximum size of read requests
-o hard_remove immediate removal (don't hide files)
-o use_ino let filesystem set inode numbers
-o readdir_ino try to fill in d_ino in readdir
-o direct_io use direct I/O
-o kernel_cache cache files in kernel
-o [no]auto_cache enable caching based on modification times (off)
-o umask=M set file permissions (octal)
-o uid=N set file owner
-o gid=N set file group
-o entry_timeout=T cache timeout for names (1.0s)
-o negative_timeout=T cache timeout for deleted names (0.0s)
-o attr_timeout=T cache timeout for attributes (1.0s)
-o ac_attr_timeout=T auto cache timeout for attributes (attr_timeout)
-o intr allow requests to be interrupted
-o intr_signal=NUM signal to send on interrupt (10)
-o modules=M1[:M2...] names of modules to Push onto filesystem stack
-o max_write=N set maximum size of write requests
-o max_readahead=N set maximum readahead
-o async_read perform reads asynchronously (default)
-o sync_read perform reads synchronously
-o atomic_o_trunc enable atomic open+truncate support
-o big_writes enable larger than 4kB writes
-o no_remote_lock disable remote file locking
Module options:
[subdir]
-o subdir=DIR prepend this directory to all paths (mandatory)
-o [no]rellinks transform absolute symlinks to relative
[iconv]
-o from_code=CHARSET original encoding of file names (default: UTF-8)
-o to_code=CHARSET new encoding of the file names (default: UTF-8)
このオプションに注意してください:
-o SSHOPT = VAL sshオプション(man ssh_configを参照)
また、man ssh_config
を見ると、IdentityFile
という秘密鍵ファイルへのパスを設定するオプションがあるため、次のことができます。
sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point
IDファイルへのパスは絶対パスである必要があります。
原則として、次のように機能します(rootとして、またはSudo
を使用):sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa SRVUSER@SERVER:PATH /mnt/mountpoint
USER
をサーバーのauthorized_keys
ファイルにあるユーザーに、SERVER
をサーバー名(または192.168.0.11などのIP)に置き換えます。SRVUSER
サーバー上のユーザーと一緒に(たとえば、root。これは推奨されませんが、可能であり、必要な場合もあります。これに対して、サーバー上で/etc/ssh/sshd_config
を正しく設定します。つまり、ディレクティブPermitRootLogin
およびPasswordAuthentication
) 。また、それに応じて/mnt/mountpoint
に置き換えます。
オプション-o nonempty
を使用すると、このディレクトリが空でない場合に/ mnt/mountpointをマウントできます。ファイル.unmounted
をこのディレクトリに保持してマウントされているかどうかを確認するため、これを使用する必要があります。したがって、test -e /mnt/mountpoint/.unmounted
が正常に返される場合(つまり、ファイル.unmountが/ mnt/mountpointに存在する場合)、マウントされていません。
実際の例:
ssh root@homeserver
as user steve worked。
sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa root@homeserver:/home /mnt/homeserver
(rootとして)
これは機能しませんでした、エラーメッセージが表示されました:read: Connection reset by peer
Solution:-o debug
を追加して、より詳細な出力を取得します。
# sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa,debug
root@homeserver:/home /mnt/homeserver
Fuse library version: 2.9.8
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE Host IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a Host key has just been changed.
The fingerprint for the ECDSA key sent by the remote Host is
SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT0123
Please contact your system administrator.
Add correct Host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
ECDSA Host key for homeserver has changed and you have requested strict checking.
Host key verification failed.
read: Connection reset by peer
そして突然、修正がはるかに簡単になりました。 sshdキーは前回のセッション以降に再作成されましたが、ローカルシステムの/root/.ssh/known_hosts
にはまだ古いキーが残っているため、機能しません。私の場合の解決策は、エディター(homeserver
など)を使用して、nano
で始まる行を/root/.ssh/known_hosts
から削除することでした。これで、sshfsを使用したマウントが機能します。最初のマウントで、新しいキーを確認する必要があります。
# mount /mnt/homeserver
The authenticity of Host 'homeserver (192.168.0.11)' can't be established.
ECDSA key fingerprint is SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsS/1234.
Are you sure you want to continue connecting (yes/no)? yes
ところで、これは/etc/fstab
の行です。
root@homeserver:/home /mnt/homeserver Fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa 0 0
したがって、それが他のものであっても、最初に-o debug
を試してください。障害を見つけるのに非常に役立ちます。