个人工具

“UbuntuHelp:SSHFS”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
 
(未显示同一用户的2个中间版本)
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/SSHFS}}
 
{{From|https://help.ubuntu.com/community/SSHFS}}
 
{{Languages|UbuntuHelp:SSHFS}}
 
{{Languages|UbuntuHelp:SSHFS}}
 +
Parent page: [[UbuntuHelp:InternetAndNetworking| Internet and Networking]] >> [[UbuntuHelp:SSH|SSH]] >> [[UbuntuHelp:SSH/TransferFiles|SSH/TransferFiles]]
 
=== Overview ===
 
=== Overview ===
[[UbuntuHelp:SSHHowto|SSH]] is a secure protocol for communicating between machines.  Sshfs is a tool that uses ssh to enable mounting of a remote filesystem on a local machine; the network is (mostly) transparent to the user.  Because ssh authenticates connections, you can be sure that only those who should have access to remote directories can mount them (as long as everything is configured properly). Because ssh encrypts connections, no one can see your files as they are transferred over the network.
+
[[UbuntuHelp:SSH|SSH]] is a secure protocol for communicating between machines.  SSHFS is a tool that uses SSH to enable mounting of a remote filesystem on a local machine; the network is (mostly) transparent to the user.  Because SSHFS authenticates connections, you can be sure that only those who should have access to remote directories can mount them (as long as everything is configured properly).
 +
Because SSH encrypts connections, no one can see your files as they are transferred over the network.  And because SSHFS is built using [[UbuntuHelp:WikiPedia:Filesystem_in_Userspace|FUSE]], even your own root user can only see your files by logging in to your account with `su`.
 
=== Installation and Setup ===
 
=== Installation and Setup ===
Simply install the sshfs package.  The dependencies should be automatically installed too.
+
Simply [[UbuntuHelp:InstallingSoftware#installing-a-package|install the following package]]: '''''[[UbuntuHelp:apt:sshfs|sshfs]]''''', then add yourself to the ''fuse'' group:
 
<pre><nowiki>
 
<pre><nowiki>
sudo apt-get install sshfs
+
sudo gpasswd -a $USER fuse
 
</nowiki></pre>
 
</nowiki></pre>
Then add yourself to the ''fuse'' group.  This is necessary so you can use the <code><nowiki>fusermount</nowiki></code> command, which is needed by the FUSE userland filesystem utility.  If you don't do this, you will get permission errors. 
+
Alternatively, GNOME users can go to System -> Administration -> Users and Groups -> (your user) -> Properties -> User Privileges, then tick the following option:
 
<pre><nowiki>
 
<pre><nowiki>
sudo adduser $USER fuse
+
Allow use of fuse filesystems like LTSP Thin Client blockdevices
 
</nowiki></pre>
 
</nowiki></pre>
You must log out and log back in in order for the changes to take effect, or try:
+
Adding yourself to the ''fuse'' group lets you use the <code><nowiki>fusermount</nowiki></code> command, which is needed by the FUSE userland filesystem utility.
<pre><nowiki>
+
Once you have added yourself to the ''fuse'' group, you should log out and log back in again for the change to take effect.
su user 
+
</nowiki></pre>
+
where user is your current user name at the command prompt.  
+
 
=== Usage ===
 
=== Usage ===
Now, assuming that you have an ssh server running on a remote machine, simply run the sshfs command to mount the remote directory.  In this example, the remote directory is <code><nowiki>/projects</nowiki></code> on remote host <code><nowiki>far</nowiki></code>.  The local mount point is ~/projects.
+
Now, assuming that you have an [[UbuntuHelp:SSH|SSH]] server running on a remote machine, simply run the SSHFS command to mount the remote directory.  In this example, the remote directory is <code><nowiki>/projects</nowiki></code> on remote host <code><nowiki>far</nowiki></code>.  The local mount point is `~/far_projects`.
 
<pre><nowiki>
 
<pre><nowiki>
sshfs $USER@far:/projects ~/projects
+
mkdir ~/far_projects
 +
sshfs -o idmap=user $USER@far:/projects ~/far_projects
 
</nowiki></pre>
 
</nowiki></pre>
 
To unmount,  
 
To unmount,  
 
<pre><nowiki>
 
<pre><nowiki>
fusermount -u ~/projects
+
fusermount -u ~/far_projects
 
</nowiki></pre>
 
</nowiki></pre>
 
To add it to your <code><nowiki>/etc/fstab</nowiki></code>,
 
To add it to your <code><nowiki>/etc/fstab</nowiki></code>,
 
<pre><nowiki>
 
<pre><nowiki>
sshfs#$USER@far:/projects   /home/$USER/remote    fuse   defaults   0 0
+
sshfs#$USER@far:/projects /home/$USER/far_projects fuse defaults,idmap=user 0 0
 
</nowiki></pre>
 
</nowiki></pre>
 
Note that you have to change ''$USER'' to your login name when editing <code><nowiki>fstab</nowiki></code>, but it is not necessary when typing commands (the shell does it for you in that case).
 
Note that you have to change ''$USER'' to your login name when editing <code><nowiki>fstab</nowiki></code>, but it is not necessary when typing commands (the shell does it for you in that case).
One thing to be aware of is that your UID (''User ID'', the unique number of your user on a system) is not necessarily the same on the two hosts. When you <code><nowiki>ls -l</nowiki></code>, the user name associated with each file is printed in the third column. However, in the filesystem, only UIDs are stored, and <code><nowiki>ls</nowiki></code> simply looks up the UID and finds the user name associated with it. In Unix, UIDs are what matter, not the user names. So if you're 1000 on the local host and 1003 on the remote host, the sshfs mounted directory would show a different user name for your files. This is not a problem, though, because the ssh server on the remote machine is what is actually reading and writing files. So even though it shows up in <code><nowiki>ls -l</nowiki></code> as a different UID, any changes will be done through the ssh server on the remote host, which will use the correct UID for the remote machine. Problems may arise if you attempt to use a program that looks at UIDs of files (e.g. <code><nowiki>ls</nowiki></code> prints the wrong user name).
+
One thing to be aware of is that your UID (''User ID'', the unique number of your user on a system) is not necessarily the same on the two hosts. When you <code><nowiki>ls -l</nowiki></code>, the user name associated with each file is printed in the third column. However, in the filesystem, only UIDs are stored, and <code><nowiki>ls</nowiki></code> simply looks up the UID and finds the user name associated with it. In Unix, UIDs are what matter, not the user names. So if you're 1000 on the local host and 1003 on the remote host, the sshfs mounted directory would show a different user name for your files. This is not a problem, though, because the ssh server on the remote machine is what is actually reading and writing files. So even though it shows up in <code><nowiki>ls -l</nowiki></code> as a different UID, any changes will be done through the ssh server on the remote host, which will use the correct UID for the remote machine. Problems may arise if you attempt to use a program that looks at UIDs of files (e.g. <code><nowiki>ls</nowiki></code> prints the wrong user name).
 +
The `idmap=user` option ensures that files owned by the remote user are owned by the local user.  If you don't use `idmap=user`, files in the mounted directory might appear to be owned by someone else, because your computer and the remote computer have different ideas about the numeric ''user ID'' associated with each user name.  `idmap=user` will not translate UIDs for other users.
 
=== GUI (Graphical User Interface) for SSHFS ===
 
=== GUI (Graphical User Interface) for SSHFS ===
 
A GUI program to create and manage SSHFS connections is available [http://dev.wa2.nl/sshfsgui/ here].
 
A GUI program to create and manage SSHFS connections is available [http://dev.wa2.nl/sshfsgui/ here].
 +
Another popular program that supports secure ftp (sftp) is [http://filezilla-project.org/  Filezilla]
 
=== Keep Alive ===
 
=== Keep Alive ===
 
Your ssh session will automatically log out if it is idle. To keep the connection active (alive) add this to '''~/.ssh/config''' or to '''/etc/ssh/ssh_config''' on the client.
 
Your ssh session will automatically log out if it is idle. To keep the connection active (alive) add this to '''~/.ssh/config''' or to '''/etc/ssh/ssh_config''' on the client.

2010年5月20日 (四) 00:17的最新版本

Parent page: Internet and Networking >> SSH >> SSH/TransferFiles

Overview

SSH is a secure protocol for communicating between machines. SSHFS is a tool that uses SSH to enable mounting of a remote filesystem on a local machine; the network is (mostly) transparent to the user. Because SSHFS authenticates connections, you can be sure that only those who should have access to remote directories can mount them (as long as everything is configured properly). Because SSH encrypts connections, no one can see your files as they are transferred over the network. And because SSHFS is built using FUSE, even your own root user can only see your files by logging in to your account with `su`.

Installation and Setup

Simply install the following package: sshfs, then add yourself to the fuse group:

sudo gpasswd -a $USER fuse

Alternatively, GNOME users can go to System -> Administration -> Users and Groups -> (your user) -> Properties -> User Privileges, then tick the following option:

Allow use of fuse filesystems like LTSP Thin Client blockdevices

Adding yourself to the fuse group lets you use the fusermount command, which is needed by the FUSE userland filesystem utility. Once you have added yourself to the fuse group, you should log out and log back in again for the change to take effect.

Usage

Now, assuming that you have an SSH server running on a remote machine, simply run the SSHFS command to mount the remote directory. In this example, the remote directory is /projects on remote host far. The local mount point is `~/far_projects`.

mkdir ~/far_projects
sshfs -o idmap=user $USER@far:/projects ~/far_projects

To unmount,

fusermount -u ~/far_projects

To add it to your /etc/fstab,

sshfs#$USER@far:/projects /home/$USER/far_projects fuse defaults,idmap=user 0 0

Note that you have to change $USER to your login name when editing fstab, but it is not necessary when typing commands (the shell does it for you in that case). One thing to be aware of is that your UID (User ID, the unique number of your user on a system) is not necessarily the same on the two hosts. When you ls -l, the user name associated with each file is printed in the third column. However, in the filesystem, only UIDs are stored, and ls simply looks up the UID and finds the user name associated with it. In Unix, UIDs are what matter, not the user names. So if you're 1000 on the local host and 1003 on the remote host, the sshfs mounted directory would show a different user name for your files. This is not a problem, though, because the ssh server on the remote machine is what is actually reading and writing files. So even though it shows up in ls -l as a different UID, any changes will be done through the ssh server on the remote host, which will use the correct UID for the remote machine. Problems may arise if you attempt to use a program that looks at UIDs of files (e.g. ls prints the wrong user name). The `idmap=user` option ensures that files owned by the remote user are owned by the local user. If you don't use `idmap=user`, files in the mounted directory might appear to be owned by someone else, because your computer and the remote computer have different ideas about the numeric user ID associated with each user name. `idmap=user` will not translate UIDs for other users.

GUI (Graphical User Interface) for SSHFS

A GUI program to create and manage SSHFS connections is available here. Another popular program that supports secure ftp (sftp) is Filezilla

Keep Alive

Your ssh session will automatically log out if it is idle. To keep the connection active (alive) add this to ~/.ssh/config or to /etc/ssh/ssh_config on the client. ServerAliveInterval 5 This will send a "keep alive" signal to the server every 5 seconds. You can usually increase this interval, and I use 120.

Links

  • This page is based off of this howto.