使用SSHFS安装远程目录在Ubuntu 11.10上

使用SSHFS在Ubuntu 11.10上安装远程目录

本教程将介绍如何使用SSHFS从本地服务器上的远程服务器安装目录。 SSHFS( S ecure SH ell F ile S ystem)是通过SSH安全地提供文件/目录的文件系统,本地用户可以像使用本地文件/目录一样使用它们。 在本地计算机上,通过FUSE(用户空间中的文件系统)安装远程共享。 我将使用本地和远程服务器的Ubuntu 11.10。

我不会保证这将为您工作!

1初步说明

我在本教程中使用以下两个系统:

  • 本地系统: server1.example.com ,IP地址: 192.168.0.100
  • 远程系统: server2.example.com ,IP地址: 192.168.0.101

我将显示如何使用SSHFS作为root用户,也可以作为普通用户使用。

我使用root权限运行本教程中的所有步骤,因此请确保以root用户身份登录:

sudo su

2安装SSHFS

server1:

在本地系统上,必须按如下方式安装SSHFS:

apt-get install sshfs

3使用SSHFS作为根

server1:

现在我想将远程目录/ home / backup (在server2上由server2的root用户拥有)挂载到本地/备份目录下,作为本地root用户。

首先加入保险丝组的根:

adduser root fuse

创建本地/备份目录,并确保它由root拥有(应该是以root身份运行这些命令):

mkdir /backup
chown root /backup

然后将remote / home / backup目录挂载到/ backup

sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

(您可以使用远程系统的完整路径,如上所述,或相对路径,如下所示:

sshfs -o idmap=user root@192.168.0.101:backup /backup

如果使用相对路径,该路径是相对于远程用户的主目录,因此在这种情况下,它将是/ root / backup 。 你甚至可以省略远程目录,如下所示:

sshfs -o idmap=user root@192.168.0.101: /backup

在这种情况下,这将转换为远程用户的主目录 - / root

-o idmap = user使得本地和远程系统使用不同的用户ID无关紧要 - 远程用户拥有的文件也由本地用户拥有。 如果您不使用此功能,您可能会收到权限问题。

如果第一次连接到远程主机,您将看到有关远程主机的真实性的警告(如果您在使用ssh或scp之前已连接到远程主机,则不会看到警告)。 在任何情况下,将要求您提供server2的根密码:

root @ server1:〜#sshfs -o idmap = user root@192.168.0.101:/ home / backup / backup
主机'192.168.0.101(192.168.0.101)'的真实性无法建立。
ECDSA键指纹为a2:38:f3:df:7a:6c:b6:3c:d6:c3:9c:88:93:e2:f0:63。
您确定要继续连接(是/否)? < - 是的
root@192.168.0.101的密码: < - server2 root password
root @ server1:〜#

我们来检查远程目录是挂载到/ backup

mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (rw)
root@192.168.0.101:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536)
root@server1:~#
df -h
root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
                       29G 1015M   27G   4% /
udev                  238M  4.0K  238M   1% /dev
tmpfs                  99M  212K   99M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  247M     0  247M   0% /run/shm
/dev/sda1             228M   24M  193M  11% /boot
root@192.168.0.101:/home/backup
                       29G 1019M   27G   4% /backup
root@server1:~#

看起来不错!

要卸载共享,运行

fusermount -u /backup

3.1创建私有/公钥对在server1上

当然,我们不想在每次尝试安装远程共享时输入密码。 因此,我们创建一个私钥/公钥对,并将公钥传输到server2 ,以便我们不再需要输入密码。

server1:

server1.example.com上创建私钥/公钥对:

ssh-keygen

root @ server1:〜#ssh-keygen
生成公共/私有rsa密钥对。
输入要保存密钥的文件(/root/.ssh/id_rsa): < - ENTER
输入密码(无密码为空): < - ENTER
再次输入相同的密码: < - ENTER
您的身份已保存在/root/.ssh/id_rsa中。
您的公钥已保存在/root/.ssh/id_rsa.pub中。
关键指纹是:
ca:0d:df:a8:0b:18:4e:a7:f3:a2:8b:e2:81:4b:ab:f8 root@server1.example.com
关键的randomart形象是:
+ - [RSA 2048] ---- +
| |
| |
| |
| |
| o。 S |
| .o =。 = o |
| .o =。 o +。 |
| =。+ o。 |
| @ * E .. o。 |
+ ----------------- +
root @ server1:〜#

重要的是,您不要输入密码,否则在没有人工交互的情况下安装将无法正常工作,因此只需按ENTER键

接下来,我们将公钥复制到server2.example.com

ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.0.101

现在检查server2的 server1的公钥是否正确传输:

server2:

cat $HOME/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnz2RwCZLLqBtB1rZKyN9XVfdAdt+PSpbGeLn+vlG/5nQvCSJhkRM3vpdmHPFrcYgJGtIU4gTCg6VDox2AxzJdGsrZN6zsLCndhgbs/r7N56ucuhdKSdeM/gLocnxkdQ86EECQqq42DaXgtqz3d8Q/Z+1KxYR82p7XK5ZoQG9vovNQNx9qhxIhsYIXMAbEv61bD1e0pBP9k9c1GfrZ79iRQrV+4UhHs/+Bca1YNby4gRmKIZK4FkzOYRUWYnIKVMMteC+lNho+ZMkKioo4CR3Z02hOV7ELFapqFY+6g7sj9cpLaM9gMY3rOd4EDARU+45U9yHBPsmIlA3zh4VkdnG/ root@server1.example.com

现在回到server1上 ,尝试再次挂载远程共享(确保在运行命令之前卸载它):

server1:

sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

如果一切顺利,您不应该被提示输入密码:

root@server1:~# sshfs -o idmap=user root@192.168.0.101:/home/backup /backup
root@server1:~#

3.2在引导时自动安装远程共享

server1:

如果您不想手动装载远程共享,则可能会在系统引导时自动挂载(如果您遵循第3.1章,否则将无法自动挂接,因为您将被要求输入密码)。 通常,我们将修改/ etc / fstab来实现这一点,但是不幸的是,在引导过程中处理/ etc / fstab时,网络尚未启动,这意味着无法挂载远程共享。

为了规避这一点,我们只需要将mount命令添加到/etc/rc.local ,这是在引导过程中要处理的最后一个文件,当时网络已经启动并运行:

vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/bin/sshfs -o idmap=user root@192.168.0.101:/home/backup /backup
exit 0

您可以通过简单地重新启动系统来测试它:

reboot

重新启动后,您可以检查

mount

df -h

如果远程共享挂载。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏